2009-04-03 10 views
3

.netでSOAPリクエストによって生成された生のXMLを取得する方法はありますか?私はこれを正確に尋ねる方法を知らないが、ここに行くWebサービスリクエスト中にxmlが送信されるかどうかを確認する方法は?

私はWeb参照を追加し、いくつかの方法を呼び出す。どのXMLが送信されているかを知る方法はありますか?デバッグの目的のためだけに、迅速かつ汚れた方法で十分です。

P.S. SSLが使用されているので、ここでは切り捨ては役に立ちません。

答えて

3

SoapExtensionAttributeを作成し、Webサービスメソッドに適用できます。

SoapExtensionAttributeから派生したクラスを作成します。

SoapExtensionから派生する別のクラスを作成します。

SoapExtensionAttributeの種類は、SoapExtensionの種類である必要があります。

SoapExtensionに入ったら、データがシリアル化/逆シリアル化された瞬間にアクセスできます。ここで

は4特定の段階です:

SoapMessageStage.BeforeSerialize 
SoapMessageStage.AfterSerialize   * 
SoapMessageStage.BeforeDeserialize  * 
SoapMessageStage.AfterDeserialize 

「*」を持つものは、あなたがストリームにアクセスする段階です。 そこから、Webサービスに出入りするxmlを記録することができます。

これは私たちがここで行うことですが、完全に機能します。 http://progtutorials.tripod.com/soapext.htm

希望いくつかの助けになっている。ここで

は細部に多くを説明したリンクです。

+0

SoapMessageから返されたストリームは書き込み専用です。私はあなたの提案を試みており、すぐに結果を返します –

+0

ええ、トリックはあなたのSoapExtension内のメモリストリームにストリームをコピーすることです。 –

5

私は通常、この種のことをFiddlerとしています。

スティック、この中に設定ファイル: -

<system.net> 
    <defaultProxy enabled="true"> 
     <proxy proxyaddress="http://127.0.0.1:8888" bypassonlocal="False"/> 
    </defaultProxy> 
</system.net> 

火災アップシオマネキ、あなたのアプリケーションからのすべてのHTTPトラフィックを監視することができるはずです。フィドラーを閉じる前にenabledをfalseに設定するだけです。

1

ネットワーク経由でデータを送信する最も簡単な方法は、ネットワークスタックを通過するときに生データにwiresharkとsnoopをインストールすることです。メリットは、他のアプリケーションやサービスが変更される前に、何が送信されているかを実際に確認することです。ウェブにはexamples and blogsがたくさんあります。

replay soap requestsにも使用できます。 SOAPだけでなく、通常のHTTPやTCP、さらにはシリアル通信など、他のネットワークにも最適です。

関連する問題