我正在使用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/

10-09 02:03