Soap客户端调用Rest Web服务

5

我正在处理一个项目,客户只支持使用SOAP WSDL来消费Web服务,而对于传入的呼叫,则支持rest。我需要将这个工具与另一个完全基于restful(具有WADL)的工具集成起来。是否可以让SOAP客户端来消费restful Web服务?如果可以,你们会推荐哪个工具?


我不是很清楚你的问题。你是否使用“客户端”一词来表示与“此工具”和“SOAP客户端”相同的事物?如果是,那么我的理解是,这个工具支持调用基于SOAP的Web服务,你的问题是如何让它调用在WADL中定义的Web服务?请注意,REST只是一种架构风格,基于SOAP的Web服务也可以是RESTful的。 - www.admiraalit.nl
可以的。使用jax-ws,您可以使用“Provider”和“Dispatch”API来完成它。您甚至可以使用“HttpURLConnection”调用REST服务。毕竟,调用REST端点只是向某个URL发出HTTP请求。这里有一些示例:http://www.java2s.com/Code/Java/Web-Services-SOA/RESTbasedWebServicesusingtheHTTPbindingandJAXWSProviderDispatch.htm,http://www.edureka.co/blog/how-to-write-restful-web-services-with-jax-ws/,https://www.subbu.org/blog/2006/08/jax-ws-for-restful-web-services - David Lizárraga
2个回答

2
SOAP定义了一种基于XML消息交换的标准通信协议规范。SOAP使用不同的传输协议,如HTTP和SMTP。标准协议HTTP使得SOAP模型可以在防火墙和代理上进行隧道传输,而无需对SOAP协议进行任何修改。
REST描述了一组架构原则,通过这些原则可以在标准化接口(如HTTP)上传输数据。REST不包含额外的消息层,并专注于创建无状态服务的设计规则。客户端可以使用唯一的URI访问资源,并返回资源的表示形式。每个新的资源表示形式都会导致客户端传输状态。在使用HTTP协议访问RESTful资源时,资源的URL作为资源标识符,GET、PUT、DELETE、POST和HEAD是要执行的标准HTTP操作。
可以通过jQuery完成。
语言识别器的jQuery示例:
$.post('https://services.open.xerox.com/RestOp/LanguageIdentifier/GetLanguageForString', 
{'document' : 'This is a sample'}, function (data) {
  var res = 'Not found';
  if (data != null) {
    res = data;
  }
});

进一步阅读:https://spring.io/guides/gs/consuming-rest-jquery/

2
不,SOAP客户端无法消费RESTful服务。它们之间没有任何互操作性。
即使您可以这样做,也不应该这样做。使用工具库,为REST服务创建一个REST客户端即可。

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