我目前正在尝试与我们的仓库建立集成。他们有一个接受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/>
错误:
错误:处理您的请求时出错。请检查您的请求,然后重试。
我认为邮件末尾添加的标签可能是问题所在。这些标签来自何处以及如何防止它们被添加到我的消息中?
答案 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