需要帮助使用Savon gem将SOAPUI请求转换为Ruby代码

时间:2014-11-19 13:47:52

标签: ruby-on-rails ruby soap soap-client savon

我正在使用SOAP API,它有两个操作,每个操作都需要API密钥和一堆其他属性。所以,我已经能够通过SOAPUI发出请求,但是我在使用savon gem(版本2)将其转换为ruby代码时遇到了麻烦。

这是searchTours请求的屏幕截图。

enter image description here

现在,如何使用Savon将其转换为ruby代码?我试过跟随,但它没有用。

client = Savon.client(wsdl: 'url goes here..')

client.operations #=> [:tour_details_full, :search_records]

message = {security_key: "SECURITYKEYS", attributes_one: "ValueOne", attribute_two: IntegerValue}

response = client.call(:search_records, message: message)

错误讯息:

  

Savon :: SOAPFault:(S:Client)找不到{url_here} SearchRecords的调度方法

2 个答案:

答案 0 :(得分:0)

规范的回答:

  1. 下载SoapUI。
  2. 在SoapUI中建立您的通话。
  3. 确保它有效。
  4. 使用Savon构建相同的请求。
  5. 询问Stackoverflow。

答案 1 :(得分:0)

你必须做这样的事情:

class SearchTours
  extend Savon::Model
  client wsdl: 'your url',
    namespaces: {
      ...
      'xmlns:soapenv' => 'http://schemas.xmlsoap.org/soap/envelope/',
      ....
      ...#your namespacecs
    }

  operations :tour_details_full, :search_records

  def self.tour_details_full
    builder = Builder::XmlMarkup.new()#describe your request params
    super message: builder
  end

  def self.search_records
    builder = Builder::XmlMarkup.new()#describe your request params
    super message: builder
  end

end

#then you can call
SearchTours.search_records #=> []

您也可以使用此online tool来检查您的wsdl服务或请求