【发布时间】:2012-05-14 10:41:59
【问题描述】:
我正在从 .NET 客户端向 Java Web 服务进行 Web 服务调用。 Web 服务请求消息中的字段之一是小数。
使用代理请求对象设置:
decimal value = 3.0
request.DecimalValue = value ;
javaService.Process(request);
当消息被序列化为soap时,DecimalValue设置为3.000000。然而,java web 服务出错了,因为它只需要小数点后 3 位数字。关于如何解决这个问题的任何想法?我无法控制 java web 服务。
补充:
java webservice 的架构将 DecimalValue 定义为
<xs:simpleType name="DecimalValue">
<xs:restriction base="xs:decimal">
<xs:totalDigits value="9" />
<xs:fractionDigits value="3" />
<xs:pattern value="\d{1,5}\.\d{3}" />
</xs:restriction>
通过添加对端点的引用来生成 Web 服务代理。
【问题讨论】:
-
如果您拥有所有标准 SOAP 绑定并使用来自
http://www.w3.org/2001/XMLSchema的decimal,则十进制值应编组为“3”。您将需要有关架构、错误、通过网络传输的实际数据的更多信息。还有您是如何创建 .net 客户端的(您是在 VS 中从 WSDL 创建的吗?) -
@DMoses,请看我对问题的补充。,
-
我不知道为什么它会编组为
3.000000。它应该编组为3,因为它忽略了此处文档中的所有这些限制:msdn.microsoft.com/en-us/library/ms733112.aspx 您需要自定义请求对象。
标签: java .net serialization soap