如何在不使用WSDL的情况下创建Ruby SOAP客户端?

时间:2010-07-07 15:42:05

标签: ruby soap

我需要编写一个能够发送和接收肥皂信息的肥皂客户端。

这个soap服务没有关联的WSDL文件,soap4r和savon似乎都需要一个。

我有一个关于我需要在Java中做什么的例子,请参阅下面的链接。

http://community.cecid.hku.hk/index.php/product/article/writing_hermes_2_ws_client_under_java/#ebms-2_0-sender-ws

我可以使用java,在这一点上,它似乎更容易。但是我个人更喜欢使用ruby进行编码,而且我们公司拥有比java更多的ruby资源。

任何人都可以确认在没有编写我自己的专用soap库的情况下可以在ruby中执行类似于java示例的操作吗?我需要能够发送有效载荷,我相信它通常是肥皂附件的形式。

我特别感兴趣的是看到不使用WSDL的soap4r示例,因为我在使用google时遇到了麻烦。

任何帮助都非常感激。

3 个答案:

答案 0 :(得分:3)

从Savon v2开始,语法略有不同

client = Savon.client do
  endpoint "http://example.com"
  namespace "http://v1.example.com"
end

http://savonrb.com/version2/client.html

答案 1 :(得分:1)

Savon不需要WSDL文档。请看the new documentation。如果您知道SOAP端点和目标命名空间,则可以执行以下SOAP请求:

client = Savon::Client.new
  wsdl.endpoint = "http://example.com"
  wsdl.namespace = "http://soap.example.com"
end

client.request :any_soap_action do
  soap.body = { :do => "something" }
end

答案 2 :(得分:0)

client = Savon::Client.new
  wsdl.endpoint = "http://example.com"
  wsdl.namspace = "http://soap.example.com"
end

这不起作用,它错过了块名称和命名空间中的“e”:

client = Savon::Client.new do | wsdl |
  wsdl.endpoint = "http://example.com"
  wsdl.namespace = "http://soap.example.com"
end
相关问题