Savon使用内置请求构建器而不是原始xml

时间:2017-07-05 19:36:32

标签: ruby-on-rails ruby savon

如果我使用原始xml的savon一切正常,这是原始的xml示例:

if((line1 == null && line2 != null) || (line2 == null && line1 != null))

如果我使用builtin方法调用该方法,则会出现错误,这是代码:

request = client.call(:authenticate, xml:'<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="xxxx/">
  <SOAP-ENV:Body>
    <ns1:authenticate>
      <ns1:username>user</ns1:username>
      <ns1:password>pwd</ns1:password>
      <ns1:cultureInfo>it</ns1:cultureInfo>
    </ns1:authenticate>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>')

这是上面代码生成的xml:

credentials={ username: 'user', password: 'pwd!!', cultureInfo: "it" }
response     = client.call(:authenticate, message: credentials)

任何想法?

1 个答案:

答案 0 :(得分:0)

我通常会这样做(未经测试)。它不漂亮但它有效。

credentials = { 'ns1:username' => 'user',
                'ns1:password' => 'pwd!!',
                'ns1:cultureInfo' => "it" }
response = client.call(:authenticate, message: credentials)

您可能希望将ns1的使用调整为您案例中实际使用的命名空间。