如何区分它是SOAP还是REST Web服务?

时间:2011-08-25 12:41:08

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

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

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:2)

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

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

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