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


       这几天帮朋友弄一个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>


     这个格式必须和服务端的一致,否则请求将会失败

你可能感兴趣的:(java,String,webservice,C#,header,SOAP)