2

我一直在用 C# 编写一个使用第三方 Web 服务的客户端。我从他们那里得到了一个 wsdl,它生成的参考在大多数情况下都可以正常工作。然而,我遇到了几个问题,运行该服务的好人没有提供任何帮助。

我推断出查明问题的最有效方法是捕获出站和入站 SOAP 消息,以与他们的设计文档中显示的原型进行比较。我知道,基于 wsdl 和来自现有 Java 应用程序的代码(以及他们自己的示例),我在调用服务的方法时提供了正确的参数。如果我可以证明我发送的服务消息符合他们的原型,那么我至少可以向他们提出问题,证明这是他们的错,而不是我的错,从而(希望)让他们要么提供更新的文档,要么修复服务。

我想不通的是如何在 C# 中设置这种消息捕获。我读过很多关于 SoapExtension 和 WCF 之类的东西,但这不是 WCF 应用程序,当我运行应用程序时,向 app.config 添加任何类型的日志记录信息似乎无济于事。我在网上找到的其他代码示例都没有。

我应该如何处理这个?是否有必要尝试将此客户端转换为 WCF 平台(如果我这样做,对创建控制台界面和独立 GUI 有什么影响)?我是否应该尝试创建一个从 wsdl 生成的类继承的派生类并从头开始对捕获进行编码?我是否错过了某种方便的工具,可以为我完成这一切而无需我进行大量编码?

任何帮助是极大的赞赏。

4

2 回答 2

3

如果您只想从 Web 服务调用中捕获原始数据,请查看以下内容:

http://www.soapui.org/

我一直用它来测试。

于 2012-11-26T17:56:54.080 回答
3

我在使用基于 PHP 的肥皂服务的 MVC3 应用程序中遇到了同样的问题。只需启动 Fiddler 2 http://www.fiddler2.com并让它捕获请求。Fiddler 捕获您的计算机发出的每个 HTTP 和 HTTPS 请求。只需为您的应用程序打开调试器,这样您就可以准确地看到发出 SOAP 请求的时间并在 Fiddler 中观察它。

于 2012-11-26T17:57:35.170 回答