0

新しい Web サービスに接続しています。Visual-Studio Add Service Reference を使用して、メソッド呼び出しを次のように取得します。

void Method(string request);

問題は、Web サービスが応答を送信するため、void が文字列である必要があることです。応答に対して無効な XML エラーが発生するためです。Fiddlerを使用すると、次のような応答が表示されます。

{"errorcode": "000","errormsg": "Alert Added."}<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><AlertResponse xmlns="http://www.quit.com/" /></soap:Body></soap:Envelope>

明らかに、XML の前に Json 応答がある無効な XML です。応答結果を取得するためにサービスを別の方法で呼び出し/設定するにはどうすればよいですか?

4

1 に答える 1

0

これはvoidメソッドですが、一方向のメソッドではないため、サーバーは応答を送信しますが、あなたの場合のように空の要素になります:

<soap:Body>
    <AlertResponse xmlns="http://www.quit.com/" />
</soap:Body>

メソッドの場合でも、サーバーがvoid返す可能性のある他の「応答」があるため、サーバーは応答を送信します。例としては、例外 (またはSOAP 用語ではfault ) があります。

ただし、あなたが話しているサービスは無効な応答を送信しています。サービスを所有しておらず、まだそれを使用する必要がある場合は、使用する前に、不要な JSON フラグメントを応答から取り除くことができるカスタム エンコーダーの作成を検討することをお勧めします。

于 2012-10-29T22:45:01.690 に答える