有没有办法获取由.net中的SOAP请求生成的原始XML。我不知道如何准确地问这个问题,但是这里有了
我添加了Web引用并调用了一些方法。有没有办法知道发送什么XML。仅用于调试目的,如此快速和肮脏的方式就足够了
P.S。 使用SSL,因此剪切在这里没有帮助
答案 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)