当前位置:编程学习 > C#/ASP.NET >>

C#调用Java WebService服务发生数据丢失

Java服务端部署了一个WebService,AXIS 1.4生成的WSDL。
vs2008 C# 客户端,采用了根据WSDL生成代理类的方法调用WebService,但是在请求WebService的一个方法后,它返回的里面的一些double类型的字段显示null,但也有一些能显示具体数值,在通过抓包查看回传的XML文件,具体发现如下:
XML头:
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
XML具体字段:
<priceOw href="#id8"/>
<multiRef id="id8" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="soapenc:double" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">0.0</multiRef>

如上,凡是xsi:type="soapenc:double"这种格式的,在C#这边显示出来的结果都是null,如果是xsi:type="xsd:double",则可以显示具体结果,因为Java端的已经是一个发布的产品,所以只能在C#端进行处理。

这种情况各位可有什么好办法解决的? --------------------编程问答-------------------- C#客户端生成的代理类里面,关于 priceOw 这个字段的代码如下:
/// <remarks/>
        [System.Xml.Serialization.SoapElementAttribute(IsNullable = true)]
        public System.Nullable<double> priceOw
        {
            get
            {
                return this.priceOwField;
            }
            set
            {
                this.priceOwField = value;
            }
        } --------------------编程问答-------------------- 补充priceOw里面的priceOwField的C#端代码:

private System.Nullable<double> priceOwField; --------------------编程问答-------------------- 各位高手来看看啊,有什么办法可以解决啊 --------------------编程问答-------------------- 既然发布端java , 你序列化一下,在c# 里获得断点 得到序列化后的原始数据
看看结果,
如果有数据了, 再反序列化。
如果不行 把代码复制过来。 --------------------编程问答-------------------- 在取到数据的地方设断点,看看就知道是啥问题喽 --------------------编程问答-------------------- java和c# 差不多的 --------------------编程问答-------------------- 1.尽量不要使用特性的结构
2.尽量使用string、数组完成数据交换
补充:.NET技术 ,  Web Services
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,