簡體   English   中英

Java和.NET Web服務的互操作性:在SOAP中僅輸出兩位數字的小數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM