使用savon版本3.x(找到当前的主分支https://github.com/savonrb/savon)。
当前要在savon 3中生成soap请求,可以将消息体定义为散列,例如:
operation.body = {
Search: {
accountID: 23,
accountStatus: 'closed'
}
}
response = operation.call
savon将从散列中生成完整的soap消息xml(信封、头等),并将该消息传递到HttpClient以将请求发送到soap端点。
我希望能够传入完整的xml消息作为我的请求,而不是散列,例如:
我的xml请求'
..... 更多的嵌套节点、名称空间和大量的属性等等……
'
似乎
body
被发送到build
以创建soap请求,然后由call
发布:https://github.com/savonrb/savon/blob/master/lib/savon/operation.rb#L79
def call
raw_response = @http.post(endpoint, http_headers, build)
Response.new(raw_response)
end
所以我想是去玩猴子补丁?
call
允许我用XML块重写build
,例如:def call
raw_response = @http.post(endpoint, http_headers, my_xml_request_message)
Response.new(raw_response)
end
这就是我们陷入困境的地方——我不清楚我的xml是否被正确地创建或发布或者如果这是正确的方法。。。
提前感谢您的帮助!
最佳答案
我还没用萨文3,因为它还不稳定。在v2中可以做的是:
client.call(:authenticate, xml: "<envelope><body></body></envelope>")
我想类似的东西也会在v3中工作。它存在于V1和V2中。
关于ruby - Savon v3.x-如何将完整的xml消息作为soap请求传递,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21472013/