c#与java webservice调用问题
问题描述一:
c#调用java写的websrevice,对方接收到的参数与实际传的值不一致,返回的时候值也获取不到,为null。
该参数为普通的string类型,因此不存在类型转换的问题。
处理:
使用fiddler抓包分析,发现发送和接收的数据都正常,因此定位为参数及返回值解析的问题。
我们来看看c#自动生成的代理类,每个方法上面都设置了哪些属性:
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("urn:TestMethod", RequestNamespace="http://MbmsService.com/", ResponseNamespace="http://test.com/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
[return: System.Xml.Serialization.XmlElementAttribute("return", IsNullable=true)]
注意 SoapBindingUse.Literal 及 SoapParameterStyle.Wrapped。
改为 SoapBindingUse.Encoded 及 SoapParameterStyle.Bare即可。