问题描述
Webservice是用java开发的,用wsdl2java工具搭建,用到的是axis1.4版本.客户端是用C#开发的,IDE用的是VS2008.遇到的问题如下:用"添加Web引用"的方式,调用Webservice中一个String返回值的方法,返回值为空;用request的方式,拼接了soap报文调用,在getResponse的时候出现异常:"服务器内部错误(500)";服务器的tomcat控制台未显示任何异常;调用其他的Webservice接口,两种方式均可以正常调用;用soapui工具测试webservice返回正常;之前java开发的APP调用也返回正常请问是什么原因导致的获取不到返回值或者返回值为空的呢?
解决方案
解决方案二:
response方式调用代码如下://构造soap请求信息StringBuildersoap=newStringBuilder();soap.Append("<?xmlversion="1.0"encoding="utf-8"?>");soap.Append("<soapenv:Envelopexmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"xmlns:wms="http://wms.zhongdu.com">");soap.Append("<soapenv:Header/>");soap.Append("<soapenv:Body>");soap.Append("<wms:pda_login_check>");soap.Append("<?xmlversion="1.0"encoding="utf-8"?><SHEET_NO><WAREHOUSE>A011</WAREHOUSE><EMP_NO>001</EMP_NO><PASSWORD>123456</PASSWORD></SHEET_NO>");soap.Append("</wms:pda_login_check>");soap.Append("</soapenv:Body>");soap.Append("</soapenv:Envelope>");//发起请求Uriuri=newUri("http://192.168.1.252:8089/edi_server/services/pdaWebServer");WebRequestwebRequest=WebRequest.Create(uri);webRequest.ContentType="text/xml;charset=utf-8";webRequest.Method="POST";webRequest.Headers.Add("SOAPAction","");using(StreamrequestStream=webRequest.GetRequestStream()){byte[]paramBytes=Encoding.UTF8.GetBytes(soap.ToString());requestStream.Write(paramBytes,0,paramBytes.Length);}//响应inta=webRequest.GetHashCode();WebResponsewebResponse=webRequest.GetResponse();using(StreamReadermyStreamReader=newStreamReader(webResponse.GetResponseStream(),Encoding.UTF8)){Console.WriteLine(myStreamReader.ReadToEnd());}Console.ReadKey();
解决方案三:
你可以用抓包工具查看你提交出去的信息到底是什么,符合web服务的输入要求么。通过这个看看问题出在哪里
解决方案四:
怎么会有两段xml标头声明的?<?xmlversion="1.0"encoding="utf-8"?>
解决方案五:
<?xmlversion="1.0"encoding="utf-8"?>
解决方案六:
你应该把精力专注在“用"添加Web引用的方式”上,而不要纠结其它暂时无关的东西。既然返回为空,那么就应该看看是服务器端返回为空,还是你的客户端解析为空。