我正在使用Savon构建客户机,但想知道如何创建实际的信封。
我正在考虑使用Nokogiri XML Builder并传入值,但不确定这是否是正确的方法。
肥皂信封规格如下:
http://api.postalmethods.com/PostalWS.asmx?op=UploadFile
最佳答案
我的回答是:不要。
萨文会自动为你创建一个信封。您可以通过数组、散列或XML字符串来传递所需的头和体您可以操作现有的(默认)命名空间,甚至重写输入操作。我不知道为什么有人需要在nokogiri这样的xml解析器中构造soap信封。
如果您不想使用Savon构造信封的原因是它缺少端点所需的某种功能,请告诉我确切的问题是什么在过去,为了满足某些api,我不得不对Savon做相当大的修改,所以很可能我已经为您准备了一个补丁如果不是的话,我当然可以为你指出正确的方向,以便你创建自己的补丁。
如果您仍然需要在savon之外构建一个信封,我建议您不要使用savon,只需通过许多伟大的http lib之一发送xml。
编辑:
为了演示如何使用SOAP头(和名称空间),可以在请求方法中包括它们和body:
client = Savon::Client.new "http://url.to/wsdl"
response = client.get do |soap|
# Use merge! for namespaces so that you don't overwrite all of the original namespaces (while still retaining the ability to overwrite individual ones)
soap.namespaces.merge!({
"xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance",
"xmlns:xsd" => "http://www.w3.org/2001/XMLSchema"
})
# Use soap.header just like you would soap.body
soap.header = {
# SOAP header hash
}
# soap.body as usual
soap.body = {
# SOAP body hash
}
end
关于ruby - 如何在Ruby中创建SOAP信封?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2971606/