C# WebService调用Java WebService(返回自定义对象) ,为什么接收为null

alexmahoro007 2015-01-30 05:28:57
SoapUI测试结果如下(左边是传的两个参数,右边是返回值):


返回的translist是有内容的,但是在vs内调用却返回为null,如下图:



返回的是userLocationTransform这个自定义类型,请教C#客户端这边怎么设置,怎样才能返回正常
...全文
509 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
BrightFireOfCy 2015-02-03
  • 打赏
  • 举报
回复
第一行的URL是webservice的发布地址,比如.net的话一般是xxxx.asmx结尾的。 第七行的URL是soapaction,其实不一定一定是一个url,可以是任何字符串,这个是用来标示运行webservice里的哪个方法用的,但是不是必须的,要看webservice的服务器端是如何定义的,有些必须要soapaction,有些根据soapbody下的第一个子元素的名字来匹配 参数的问题,就是要按webservice服务器发布的wsdl自己组装soap消息,也就是前面代码里面BuildSoap要实现的东西。
alexmahoro007 2015-02-02
  • 打赏
  • 举报
回复
谢谢3L 1.请问第1和第7行的url有什么区别吗 2.对方的webservice需要传两个参数,用你说的这种方法怎么传
BrightFireOfCy 2015-01-30
  • 打赏
  • 举报
回复
不好意思,看错了,你是客户端。 基本方法如下所示:

HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create("http://your.webservice.com/yourendpoint.xxx");
            try
            {
                //根据用户的输入设置请求对象的标题字段
                //httpRequest.ContentType = "application/soap+xml; charset=utf-8";
                httpRequest.ContentType = "text/xml; charset=utf-8";
                httpRequest.Headers.Add("SOAPAction", "http://xxxx.xxxx.com.xxxx/xxxx/yyyy");
                httpRequest.Method = "POST";
                byte[] req_soap = BuildSoap();// 构建SOAP形式的request,BuildSoap这部分你要自己实现,方法多种多样
                httpRequest.ContentLength = req_soap.GetLength(0);
                Stream rs = httpRequest.GetRequestStream();
                rs.Write(req_soap, 0, (int)(httpRequest.ContentLength));
                rs.Close();
            }
            catch (Exception ex)
            {
            }
            HttpWebResponse httpResponse;
            bool err = false;
            try
            {
                httpResponse = (HttpWebResponse)httpRequest.GetResponse();
            }
            catch (WebException ex)
            {
            }

            StreamReader stream = new StreamReader(httpResponse.GetResponseStream());
            string x = stream.ReadToEnd();  
            // 至此你得到了返回的SOAP消息的字符串,当然你也可以用DOM的read方法直接读httpResponse.GetResponseStream()
BrightFireOfCy 2015-01-30
  • 打赏
  • 举报
回复
呵呵,原因是你调用的webservice返回的response里面的根节点带前缀,其实你获得的hubian这个变量也是null,只不过因为是boolean的所以设了false为默认值。不信你让webservice返回个hubian是true的值试试。 这个东西无解。呵呵 不过如果你要手动解析的话可以实现一个Ihttpmodule,或者ashx,request.inputstream可以拿到整个soap的消息
alexmahoro007 2015-01-30
  • 打赏
  • 举报
回复
如果解决不了 请问我怎么通过vs的webservice方式获取到返回的XML 再去解析这个xml,这种是最笨的方法了 求大神指教

12,162

社区成员

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

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