1

如何将我的 Web 服务函数的 SOAP 标头作为 xml 获取?

我需要我的工作 SOAP 标头的 XML 版本,以用作 SOAP 标头损坏的人的示例。他使用的是不同的编程语言,但由于标头是用 XML 发送的,我们希望我们可以轻松地比较它们。我正在使用 C# 和 ToString() 只是给了我对象的名称。谷歌搜索后,我尝试了 Fiddler,但没有捕捉到任何东西,而且 SOAP 扩展看起来太复杂了,这似乎是一项非常简单的任务。

4

2 回答 2

4

使用 ASMX Web 服务没有简单的方法可以做到这一点。如果您使用的是 WCF,那么打开消息日志记录将是一件小事。

Fiddler 应该可以捕捉一切,而且非常值得学习如何使用。请务必查看在线文档以了解如何捕获从 localhost 到 localhost 的流量。

于 2010-07-28T13:54:22.477 回答
1

该问题的公认答案提到您可以使用soapUI 捕获到Web 服务的流量。您可以将其用作代理或 HTTP 隧道,以捕获发送到您的 Web 服务的消息。我认为在 HTTP 隧道模式下使用它是有意义的,因为这样您就不必对客户端执行任何操作,只需将 URL 指向soapUI 而不是您的实际服务。

soapUI 网站讨论了 SOAP 监视器功能,但我认为它不能很好地解释设置 HTTP 隧道。

以下是涉及的步骤(基于soapUI 3.0.1):

  1. 打开肥皂用户界面
  2. 创建一个新的soapUI项目... 2.1 为您的项目命名 2.2 输入您服务的WSDL的路径(http://localhost/.../YourService.asmx?WSDL
  3. 右键单击刚刚创建的项目
  4. 选择“启动 SOAP 监视器”
  5. 选择“HTTP 隧道”
  6. 为“端口”指定一个未使用的端口号。默认值可能会起作用。
  7. 在“为 HTTP 隧道设置端点”中输入 Web 服务的 URL
  8. 如果您使用 SSL,那么您可能需要填写其他一些字段;否则,单击确定
  9. HTTP 隧道正在运行,因此现在只需重新配置客户端以使用 HTTP 隧道而不是实际的 Web 服务。因此,如果您的实际服务是“ http://localhost:1234/YourService.asmx ”,那么重新配置您的客户端以使用“ http://localhost :{Port}/YourService.asmx”,其中 {Port} 是您输入的数字在第 6 步中。
  10. 现在只需正常运行您的客户端即可。您将看到在soapUI 界面中记录的流量。选择一条消息并单击窗口底部的“消息内容”按钮以查看实际的 SOAP 消息。
于 2010-07-28T17:58:16.493 回答