2009-04-25 14 views
0

私はサードパーティのWebサービスからのXML応答の逆シリアル化に大きな問題があります。.NETのApache WebService逆シリアル化の問題

は、ここではXML応答

<?xml version="1.0" encoding="utf-8"?> 
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"> 
    <SOAP-ENV:Body> 
    <ns1:CardsListResponse xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/"> 
     <return xmlns:ns9402="http://xml.apache.org/xml-soap" xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="ns9402:Map[62]"> 
     <item xmlns:ns6162="http://xml.apache.org/xml-soap" xsi:type="ns6162:Map"> 
      <item> 
      <key xsi:type="xsd:string">card</key> 
      <value xsi:type="xsd:string">0000000000</value> 
      </item> 
      <item> 
      <key xsi:type="xsd:string">service</key> 
      <value xsi:type="xsd:string">0</value> 
      </item> 
     </item> 
     </return> 
    </ns1:CardsListResponse> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

呼び出す方法

[SoapDocumentMethod] 
[SoapTrace] 
public object[] CardsList(string login, string password) 
{ 
object[] result = this.Invoke("CardsList", new object[] { LOGIN, PASSWORD }); 
return (object[])result; 
} 

Invokeメソッドは、オールウェイズnullを返し、そう問題はデシリアライズです。 デシリアライゼーションプロセスをどのように修正すればよいのでしょうか?私はこれにどのように影響を与えることができますか、私は自分のデシリアライズメソッドを書くことができますか?

ありがとうございます!

答えて

0

投稿したコードはどのように作成しましたか?これは「Web参照の追加」コマンドからですか、それとも単独でそのコードを作成しましたか?私はこれがRPCスタイルのアプリケーションからの応答のように見えるので尋ねます。

+0

サービスがWSDLを持たないため、自分で作成しました。 –

+1

WSDLがない場合は、SOAP Webサービスではありません。クライアントとサービスの間の契約を推測することに悩まされています。がんばろう。 –

+0

WSDLはサービスのみを記述します。私はデシリアライゼーションにのみ問題があります。 –

関連する問題