如何使用net / http发布xml数据,网址中也包含数据

时间:2011-11-03 02:53:03

标签: ruby-on-rails xml http post net-http

我正在使用api,要求我将xml发布到url,例如someapi.com?userID = 123。到目前为止,我已经尝试过这个(假设xml已经在xml变量中编写):

url = URI.parse('http://www.someapi.com/process_leads.asp')
request = Net::HTTP::Post.new(url.path)
request.content_type = 'text/xml'
request.body = xml
request.set_form_data({'userID' => '1204'}, ';')
response = Net::HTTP.start(url.host, url.port) {|http| http.request(request)}

我想知道我是否可以将userID作为表单数据但是也可以发布xml?我基本上应该将xml发布到http://www.someapi.com/process_leads.asp?userID=1204。这可能吗?

1 个答案:

答案 0 :(得分:7)

我会考虑使用Http库,例如HTTParty

对您的请求使用HTTParty的示例如下所示:

HTTParty.post('http://www.someapi.com/process_leads.asp', :query => {:userID => 1024}, :body => xml )

:query选项获取将添加到帖子URL的键/值的哈希值, :body是xml所在的位置。

注意:某些api要求xml具有一个名称,例如你可能需要做类似

的事情
:body => "request=#{xml}"

希望这有帮助。