[英]java and .NET webservice interoperability: outputing a decimal with only 2 digits in the SOAP
我正在從.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 Web服務的架構將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服務代理。
給定此示例,該示例是使用您提供的簡單xsd創建的:
[System.Runtime.Serialization.DataMemberAttribute(Order=0)]
public decimal DecimalValue;
我將其更改為以下內容:
[System.Runtime.Serialization.DataMemberAttribute(Order=0, Name="DecimalValue")]
private string DecimalValueFormatted;
private decimal decimal_value_int;
public decimal DecimalValue {
get { return decimal_value_int; }
set
{
decimal_value_int = value;
DecimalValueFormatted = String.format("{0:N2}", value);
}
}
注意:這有點麻煩,如果您必須對許多類型執行此操作,則需要創建自己的格式屬性,可以將其放在數據成員上,並為檢查屬性的十進制添加自定義類型綁定。 我實際上還沒有完成attribute方法,所以這可能聽起來很難。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.