Rails为我的XML消息添加了元素

时间:2016-03-15 04:12:47

标签: ruby-on-rails ruby xml ruby-on-rails-4

我目前正在尝试与我们的仓库建立集成。他们有一个接受XML消息的API。但是,当我向他们发送消息(根据规范)时,我不断收到错误,我的XML无效。我相信Rails正在为我的消息添加我不想要的元素。我的代码:

    x = ::Builder::XmlMarkup.new(:indent=>2)
    x.instruct! :xml, :version=>"1.0", :encoding=>"UTF-8"
    x.InventoryXML {
        x.CustomerID("username")
        x.Password("password")
        x.Items {
            x.ItemID(self.name)
        }
    }

    http = Net::HTTP.new("www.webgistix.com")
    response = http.post("/XML/GetInventoryForSelectedItems.asp", x.to_xml)
    answer = self.evaluate_smartfill_response(response)
    return x.to_s + "\n Response: " + answer.to_s

当我打印退货时,这就是我得到的:

<?xml version="1.0" encoding="UTF-8"?> 
<InventoryXML> 
  <CustomerID>username</CustomerID> 
  <Password>password</Password> 
  <Items> 
    <ItemID>item</ItemID> 
  </Items>         
</InventoryXML> 
<inspect/> <to_xml/> <to_s/> 

错误:

  

错误:处理您的请求时出错。请检查您的请求,然后重试。

我认为邮件末尾添加的标签可能是问题所在。这些标签来自何处以及如何防止它们被添加到我的消息中?

1 个答案:

答案 0 :(得分:0)

我更新了我的代码,这似乎解决了这个问题:

    builder = Nokogiri::XML::Builder.new do |xml|
        xml.InventoryXML {
            xml.CustomerID("customer")
            xml.Password("password")
            xml.Items {
                xml.ItemID(self.name)
            }
        }
    end
    http = Net::HTTP.new("www.webgistix.com")
    response = http.post("/XML/GetInventoryForSelectedItems.asp", builder.to_xml)
    answer = self.evaluate_smartfill_response(response)
    return builder.to_xml + "\n\n Response: " + answer.to_s