您的位置:首页 > 编程语言 > Java开发

dotnet调java webservice C#调java webservice 头部验证 SoapHeader

2012-05-15 13:48 387 查看
这几天帮朋友弄一个dotnet 的webservice调用java webservice程序,java这方为服务器端,提供服务,使用XFire写的,客户端用的是dotnet,我们都知道,webservice是用soap协议传输的,不同语言都支持这个协议dotnet更不用说了,dotnet可以根据提供的wsdl描述语言来生成调用程序,这一步肯定是没有问题的。但wsdl指令并不能生成头部,需要程序员自己手动添加。

问题就出在这个头部信息,先来看一个代码

声明自己携带的头部,这个成员变量作为客户端动态调用程序的一部分

public MySoapHeader header;

为服务方法声明头部

[System.Web.Services.Protocols.SoapHeaderAttribute("header")]
public string method([System.Xml.Serialization.XmlElementAttribute(IsNullable = true)] string p0, [System.Xml.Serialization.XmlElementAttribute(IsNullable = true)] string p0, [System.Xml.Serialization.XmlElementAttribute(IsNullable = true)] string p2)


声明自己的头部类:

[System.Xml.Serialization.XmlTypeAttribute(Namespace = "")]
[System.Xml.Serialization.XmlRootAttribute(ElementName = "token",  IsNullable = false)]
public class MySoapHeader : System.Web.Services.Protocols.SoapHeader
{

/// <remarks/>
public string username;

/// <remarks/>
public string password;

}


username和password是需要验证的参数名称,这个名称必须与提供服务代码的名称一致,

注意红色的字体,这些地方必须和提供服务的那一方一致,否则就不能连接上服务器,并且会产生很多莫名其妙的错误,这些红色的地方区分大小写,以上头部信息产生的xml为:

<header >
<token>
<username>aaa</username>
<password>pp</password>
</token>
</header>


这个格式必须和服务端的一致,否则请求将会失败
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: