0

この質問のバリエーションは明らかに何十回も尋ねられていますが、私が必要とする解決策は非常にとらえどころのないようです. 今回は魅力だと思います!

SOAP xml を介して Java Web サービスと通信する C# アプリケーションがあります。アプリケーションは、問題なく WSDL を使用してサービスをインポートしました。ただし、xml オブジェクトの 1 つは dateTime 型です。

<complexType name="Interaction">
    <sequence>
        <element name="ContactDate" type="dateTime" minOccurs="0" maxOccurs="1"/>
    </sequence>
</complexType>

データベースから取得した日付は、次のようになります: 2013-07-10. UTC 形式を使用して XML dateTime オブジェクトに取得する必要があります: yyyy-MM-ddTHH:mm:ss.fffzzz

これを適切に解析された文字列に簡単に変換できます。それは問題ではありません。この問題は、データをサービス オブジェクトにロードしようとすると発生します。データを文字列としてロードできません。DateTime オブジェクトでなければなりませんが、DateTime は UTC 形式の使用を拒否します。

これはシリアル化の問題かもしれないと思いました。xml に変換して Web サービスに送信する際に、正しくシリアライズできていないと思います。この特定の要素のシリアル化情報は次のとおりです。

[System.Xml.Serialization.XmlElementAttribute(Order=2)]
public System.DateTime ContactDate {
    get {
        return this.contactDateField;
    }
    set {
        this.contactDateField = value;
        this.RaisePropertyChanged("ContactDate");
    }
}

私が見逃している、または間違っている可能性があることについてのアイデアはありますか? どんな助けでも大歓迎です。ありがとう!

4

2 に答える 2

0

結局、これは、この問題に対して私たちが思いついた非常に残念な答えでした. いずれにせよ、C# に日時形式への適切なシリアル化を強制する方法を特定できませんでした。これを回避するために、最終的に Java Web サービスの WSDL を変更して、型を文字列に変更しました。文字列に設定すると、他のすべては明らかに簡単でした.

complexType name="Interaction">
    <sequence>
        <element name="ContactDate" type="string" minOccurs="0" maxOccurs="1"/>
    </sequence>
</complexType>
于 2013-07-31T14:40:28.587 に答える