如何使用Savon向头标记添加属性?

Mar*_*ard 2 ruby soap savon

我的SOAP文档中的标题需要具有如下属性:

<soap:Header>
<eWAYHeader xmlns="https://www.eway.com.au/gateway/managedpayment">
  <eWAYCustomerID>string</eWAYCustomerID>
  <Username>string</Username>
  <Password>string</Password>
</eWAYHeader>
Run Code Online (Sandbox Code Playgroud)

eWAYHeader需要一个xmlns属性.

我试过了

    def create_customer(customer, card)
    response = @client.request(:create_customer, "xmlns" => "https://www.eway.com.au/gateway/managedpayment") do
      soap.header = header
      soap.body = create_customer_body(customer, card)
    end
  end

  private

  def header
    {
      "eWAYHeader" => {
        :attributes! => { :xmlns => 'http://www.eway.com.au/gateway/managedpayment' },
        "eWayCustomerID" => '87654321',
        "Username" => 'test@eway.com.au',
        "Password"=> 'test123'
      }
    }
  end
Run Code Online (Sandbox Code Playgroud)

但属性!条目被忽略.

soap.header只接受Hash作为参数,所以我不能只使用字符串设置它的值.

我如何在Savon实现这一目标?

谢谢,

马丁

Ani*_*uri 5

你可以通过这样做来实现

soap.header = {
  "eWAYHeader" => {
    "eWayCustomerID" => '87654321',
    "Username" => 'test@eway.com.au',
    "Password"=> 'test123'
  },
  :attributes! => {"eWAYHeader" => { :xmlns => 'http://www.eway.com.au/gateway/managedpayment' } }, }
Run Code Online (Sandbox Code Playgroud)