C#调用java开发的Webservice无返回值

nan89221 2015-09-09 10:57:03
Webservice是用java开发的, 用wsdl2java工具搭建, 用到的是axis1.4版本.
客户端是用C#开发的, IDE用的是VS2008.

遇到的问题如下:
用"添加Web引用"的方式, 调用Webservice中一个String返回值的方法, 返回值为空;
用request的方式, 拼接了soap报文调用, 在getResponse的时候出现异常: "服务器内部错误(500)";
服务器的tomcat控制台未显示任何异常;
调用其他的Webservice接口, 两种方式均可以正常调用;

用soapui工具测试webservice返回正常;
之前java开发的APP调用也返回正常

请问是什么原因导致的获取不到返回值或者返回值为空的呢?
...全文
496 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你应该把精力专注在“用"添加Web引用的方式”上,而不要纠结其它暂时无关的东西。 既然返回为空,那么就应该看看是服务器端返回为空,还是你的客户端解析为空。
本拉灯 2015-09-14
  • 打赏
  • 举报
回复
<?xml version=\"1.0\" encoding=\"utf-8\"?>
  • 打赏
  • 举报
回复
怎么会有两段xml标头声明的?
<?xml version=\"1.0\" encoding=\"utf-8\"?>
  • 打赏
  • 举报
回复
你可以用抓包工具查看你提交出去的信息到底是什么,符合web服务的输入要求么。通过这个看看问题出在哪里
nan89221 2015-09-09
  • 打赏
  • 举报
回复
response方式调用代码如下:

//构造soap请求信息
            StringBuilder soap = new StringBuilder();
            soap.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
            soap.Append("<soapenv:Envelope xmlns: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("<?xml version=\"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>");

            //发起请求
            Uri uri = new Uri("http://192.168.1.252:8089/edi_server/services/pdaWebServer");
            WebRequest webRequest = WebRequest.Create(uri);
            webRequest.ContentType = "text/xml; charset=utf-8";
            webRequest.Method = "POST";
            webRequest.Headers.Add("SOAPAction", "");

            using (Stream requestStream = webRequest.GetRequestStream())
            {
                byte[] paramBytes = Encoding.UTF8.GetBytes(soap.ToString());
                requestStream.Write(paramBytes, 0, paramBytes.Length);
            }

            //响应
            int a = webRequest.GetHashCode();
            WebResponse webResponse = webRequest.GetResponse();
            using (StreamReader myStreamReader = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8))
            {
                Console.WriteLine(myStreamReader.ReadToEnd());
            }

            Console.ReadKey();

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧