SOAP Web服务仅支持"POST"http方法

evg*_*y44 64 java post soap web-services http

我在一次采访中遇到了这个问题,你能告诉我SOAP Web服务是否只支持"POST"http方法,还是有一些方法可以接受服务器端的其他方法?

小智 82

我总是使用POST,但根据W3C标准,SOAP支持POST和GET方法.

编辑:经过一些研究,似乎并不完全正确,正如你在这里看到的那样.这是理论上可能使用GET因为POST和GET是可以通过HTTP使用HTTP传输协议和SOAP的方法.

但是如您所知,GET在查询字符串中包含请求.SOAP请求(XML消息)通常过于复杂和冗长,无法包含在查询字符串中,因此几乎每个实现(例如JAX-WS)都只支持POST.


Vah*_*yan 18

线程已有三年了,但我认为仍会有很多人会向自己提出同样的问题,并会在网上找到错误的答案.问题的答案是否定的,也可以使用GET方法.

根据SOAP规范,可以在这里找到:https://www.w3.org/TR/2007/REC-soap12-part0-20070427/#transport GET和POST方法都可用于通过http交换SOAP消息.使用HTTP POST方法在HTTP请求的主体中传递SOAP消息使用称为SOAP请求 - 响应消息交换模式的模式.在HTTP GET的情况下,使用称为SOAP响应消息交换模式的模式.这两种模式的主要区别在于:

第一种类型的交互允许在HTTP POST的主体内使用数据来创建或修改由HTTP请求发往的URI所标识的资源的状态.第二种类型的交互模式提供了使用HTTP GET请求获取资源表示而不以任何方式改变其状态的能力.在第一种情况下,特定于SOAP的方面是HTTP POST请求的主体是SOAP消息,必须处理(根据SOAP处理模型)作为符合要求的特定于应用程序的处理的一部分. POST语义.在第二种情况下,forseen的典型用法是这样的情况:正在请求的资源的表示不是作为HTML,或者实际上是通用XML文档而是作为SOAP消息返回的.也就是说,响应消息的HTTP内容类型标题将其标识为媒体类型"application/soap + xml"

因此可以使用GET和POST方法.另一件事是在实践中大多使用POST方法.

糟糕的是,在将REST服务与SOAP服务进行比较时,作为REST的一个优点,人们会带来缓存,这在SOAP中是不可用的,因为SOAP只使用POST.这是完全错误的.