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

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

7
如果它是一个.NET ASMX服务,那么它总是SOAP。通过HTTP公开的SOAP服务将始终使用HTTP POST方法进行通信。它还应该公开一个.wsdl文件供您使用,并从中生成客户端代码,因此您不必担心使用JSON框架或编排自己的HTTP请求到该Web服务...您生成的Objective-C客户端应该为您处理这个问题。 这个问题似乎有你需要在Objective-C中完成的答案。

我尝试使用Firefox Firebug查看更多信息。在跟踪请求后,我发现该请求是发送到以下链接:http://www.website.com/GetQuote.aspx?units=1&len=1&width=1&height=1&weight=1&type=1&qty=1&cnt=GB&postcode=as123 它看起来像是REST webservice。 - Centurion

3
如@whaley在他的答案中所说,看起来你正在处理一个SOAP服务。知道这一点可以让你朝着正确的方向迈出一步,但如果你想与之交互,你需要做更多的事情。你需要了解它支持的SOAP操作的详细信息,请求和响应消息的XML架构等。如果你能找到WSDL文件,它应该提供所有这些信息。
如果你无法找到WSDL文件(一些服务因各种原因不愿意让它变得容易),那么你可能仍然能够找到。如果网站真正使用SOAP接口进行交互,那么你可以使用任何数量的工具查看浏览器发送的请求。在Safari中,启用开发人员工具菜单,然后显示Web检查器。你可以看到HTTP请求的细节并查看正在发生的事情。Firefox有firebug插件可以做同样的事情甚至更多。每个浏览器都有自己的开发工具,但你必须找到适合你的浏览器的正确工具。
警告:经常一个与你的后端服务相互作用的网页实际上并没有直接使用SOAP服务。它可能使用一个替代和非公共接口来进行所需的调用。如果你查看浏览器发送的请求,并且它看起来像一个SOAP消息(很多像SoapEnvenlope元素的带有不同请求/响应XML的东西),那么可以相当安全地假设你可以从Objective-C复制这些SOAP消息。如果不是这样,除非你能找到WSDL文件,否则你可能会陷入困境。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接