【问题标题】:Need help translating SOAPUI request into Ruby code using Savon gem需要帮助使用 Savon gem 将 SOAPUI 请求转换为 Ruby 代码
【发布时间】:2015-01-17 01:34:17
【问题描述】:

我正在开发一个 SOAP API,它有两个操作,每个操作都需要 API 密钥和一堆其他属性。因此,我已经能够通过 SOAPUI 发出请求,但是我无法使用 savon gem(版本 2)将其转换为 ruby​​ 代码。

这是 searchTours 请求的截图。

现在,我如何使用 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 的调度方法

【问题讨论】:

  • 它是 DOTNET 网络服务吗?这可能意味着您必须明确命名soap_action。
  • 我不知道,但让我试试soap_action。我会尽快报告。
  • 这似乎是一个配置问题,因此可能会仔细检查 Savon 文档以确保您正确执行了所有操作。此外,如果您还没有看到这个类似的问题,可能会有答案,特别是请确保您以斜杠结束网址:stackoverflow.com/q/7478406/398696

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


【解决方案1】:

你必须这样做:

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 服务或请求

【讨论】:

  • 如果您使用 Ad Block,该在线工具会永久禁止您!
猜你喜欢
  • 1970-01-01
  • 2011-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多