如何检查Web服务请求期间发送的xml?

时间:2009-04-03 11:51:38

标签: .net web-services

有没有办法获取由.net中的SOAP请求生成的原始XML。我不知道如何准确地问这个问题,但是这里有了

我添加了Web引用并调用了一些方法。有没有办法知道发送什么XML。仅用于调试目的,如此快速和肮脏的方式就足够了

P.S。 使用SSL,因此剪切在这里没有帮助

4 个答案:

答案 0 :(得分:5)

我通常使用Fiddler执行此类操作。

将其粘贴在配置文件中: -

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

启动提琴手,您应该能够监控来自您的应用程序的所有http流量。在关闭fiddler之前,只需将enabled设置为false。

答案 1 :(得分: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

希望能有所帮助。

答案 2 :(得分:1)

通过网络发送任何数据的最简单方法是安装wireshark并在原始数据通过网络堆栈时窥探原始数据。好处是,在任何其他应用程序或服务修改之前,您确实会看到正在发送的内容。网上有很多examples and blogs

您也可以将其用于replay soap requests。它也适用于其他网络 - 不仅仅是SOAP,而是普通的HTTP和TCP,甚至是串行通信。

答案 3 :(得分:0)