我试图查询netsuite api的货币。以下soap请求适用于SOAP UI客户端。但是我很难尝试使用ruby的savon gem 0.9.7版本。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:messages_2012_2.platform.webservices.netsuite.com" xmlns:urn1="urn:core_2012_2.platform.webservices.netsuite.com">
<soapenv:Header>
<urn:passport>
<urn1:email>xxx@abc.com</urn1:email>
<urn1:password>xxx</urn1:password>
<urn1:account>xxx</urn1:account>
</urn:passport>
</soapenv:Header>
<soapenv:Body>
<urn:getAll>
<urn:record recordType="currency"/>
</urn:getAll>
</soapenv:Body>
</soapenv:Envelope>
基本上我无法在urn:record元素上设置属性。以下是行不通的:
response = client.request :urn, :get_all do
soap.body = { "urn:record" => { :attributes! => { "recordType" => "currency" } } }
end
请告知。
答案 0 :(得分:2)
如http://savonrb.com所述,attributes!
哈希中的密钥必须与XML标记匹配。你想写这样的东西:
response = client.request :urn, :get_all do soap.body = {'urn:record'=>'', :attributes!=>{'urn:record'=>{'recordType'=>'currency'}} } end
请告诉我们这是否适合您。
答案 1 :(得分:1)
仔细检查原始肥皂请求。 :get_all可能需要“getAll”让savon从字面上理解你;它可能会将其更改为GetAll
答案 2 :(得分:0)
在savon的新版本中,您可以在操作标记的本地上下文中放置:属性:
@interaction_client.call(:retrieve_interaction, message: message_hash, :attributes => { 'attachmentInfo' => include_attachments.to_s })
在这种情况下,attachmentInfo
属性将被放入与操作链接的主操作标记中,在此示例中,这将是ns:RetrieveInteractionRequest
标记。
请注意,语法不包含感叹号。