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