【问题标题】:How to distinguish is it a SOAP or REST webservice?如何区分它是 SOAP 还是 REST Web 服务?
【发布时间】:2011-11-03 16:01:30
【问题描述】:

我需要使用一些当前在某些网站中实现的 .NET asmx webservices。我需要创建一个应用程序,以与网站相同的方式使用这些 Web 服务。有两个问题。首先,我没有关于那些 web 服务方法(调用、使用的格式等)的规范。其次,我只构建了一个使用 JSON 框架的应用程序,用于使用其 API 从 flick 获取 JSON 数据。我猜这是使用 REST webservices 完成的 :) 我明白,为了向服务器执行发布/获取,我需要构造一个请求字符串,然后将其传递给网络服务器,获取结果,解析它们(XML 或 JSON)和然后查看它们。所以,我不知道如何识别当前网站的网络服务格式。我查看了该网站的源代码,看到了一堆 Javascript 代码文件,这些文件正在做很多神秘的检查、验证等工作。那么,如何识别正确的格式呢?

【问题讨论】:

    标签: iphone objective-c web-services rest soap


    【解决方案1】:

    如果它是 .NET ASMX 服务,那么它始终是 SOAP。通过 HTTP 公开的 SOAP 服务将始终使用 HTTP POST 方法进行通信。它还应该公开一个 .wsdl 文件以供您使用并从中生成客户端代码,因此您不必担心使用 JSON 框架或编排您自己的对该 Web 服务的 HTTP 请求……您生成的 Objective-C客户应该为您解决这个问题。

    This question seems to have the answers you need for doing this in Objective-C.

    【讨论】:

    • 我尝试使用 firefox firebug 查看更多信息。跟踪请求后,我看到该请求是针对某个链接发出的:website.com/… 它看起来像 REST Web 服务。
    【解决方案2】:

    正如@whaley 在他的回答中所说,看起来您在这里处理的是 SOAP 服务。知道这一点可以让你朝着正确的方向迈出一步,但如果你想与之互动,你需要做的还不止这些。您需要了解它支持的 SOAP 操作的详细信息、请求和响应消息的 XML 模式等。如果您能够找到 WSDL 文件,它应该会为您提供所有这些信息。

    如果您无法追踪 WSDL 文件(由于各种原因,某些服务不喜欢让它变得容易),那么您仍然可以找到它。如果网站真正使用 SOAP 接口进行交互,那么您可以使用任意数量的工具查看浏览器发出的请求。在 Safari 中,启用开发人员工具菜单,然后显示 Web 检查器。您可以查看 HTTP 请求的详细信息并了解发生了什么。 Firefox 有 firebug 插件,可以做同样的事情,甚至更多。每个浏览器都有自己的开发工具,但您必须为您的浏览器找到合适的工具。

    警告:与您的后端服务交互的网页通常实际上并不直接使用 SOAP 服务。它可能正在使用备用和非公共接口来进行所需的调用。如果您查看浏览器发出的请求,它看起来像一条 SOAP 消息(很多东西,例如具有不同请求/响应 XML 的 SoapEnvenlope 元素),那么假设您可以从 Objective-c 复制这些 SOAP 消息是非常安全的。如果没有,除非您可以追踪 WSDL 文件,否则您可能会运气不佳。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-22
      • 1970-01-01
      • 2015-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多