Capture SOAP Envelope(C#WinForm调用.ASMX外部供应商服务)

时间:2010-04-01 17:54:45

标签: c# soap web-services

我从.NET 3.5客户端(WinForm)调用第三方供应商的外部SSL Web服务。供应商已要求我向他们发送Soap Header以验证为什么事情不起作用。

我使用WireShark来捕获数据包,但由于Web服务是SSL,因此数据包是加密的。

是否有一些神奇的代码行添加到我的C#客户端,以便在我调用他们的web /方法之前或之后保存或显示Soap Envelope?

3 个答案:

答案 0 :(得分:1)

您究竟是如何访问网络服务的?您使用的是WCF还是其他机制?

应始终有效的一种方法是使用Fiddler。它基本上像一个代理,拦截客户端和Web服务之间的调用(或任何HTTP调用,真的),然后向您提供请求和响应的内容。

从那里,您可以获取SOAP信封并将其发送给供应商。

如果您使用的是WCF,则可以使用自定义端点行为来注入IClientMessageInspector实现。在将请求发送到服务器之前(通过Message方法实现)以及在收到请求之后,此实现都可以访问BeforeSendRequest(这是SOAP信封的对象表示)实例回复(通过AfterReceiveReply方法实现)。

答案 1 :(得分:1)

在.NET 2.0中,我使用了Web Service Extensions 3.0并实现了PolicyAssertion和SoapFilter。 ProcessMessage函数将为您提供保存/修改soap标题和正文的完整权限。

答案 2 :(得分:0)

envelope.Save("c:\\filename.xml");