Rails 3发布到外部Web服务

时间:2013-02-22 14:40:59

标签: ruby-on-rails json web-services

让我们说我有一篇博客帖子,用户正在创建,我希望将所有数据作为具有特定架构的XML发送到外部Web服务,以便可以将其提取到该Web服务中。

我一直在研究ActionDispatch :: Request

我读了这篇Using Ruby on Rails to POST JSON/XML data to a web service帖并回答

但是我收到一条错误,说content_type不是一个有效的请求方法。所以我更改了那一行来调用header方法并使用适当的信息为内容类型创建一个标题

好的......现在去哪儿?

到目前为止,这是我的代码:

url= URI.parse('http://10.29.3.47:8080/ingest')
response = Net::HTTP::Post.new(url.path)
request.headers["Content-Type"] = 'application/json'
request.body = 'all of my xml data and schema which is far too long to type here'
response = Net::HTTP.start(url.host, url.port) {|http| http.request(request)}
assert_equal '201 Created', response.get_fields('Status')

我得到一个错误,说request.body也不是一个有效的方法调用,但是当我查看API时,匹配body的唯一东西是“body()”,它不带参数。那么如何将我的帖子内容传递给网络服务?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您有response = Net::HTTP::Post.new(url.path)而不是request = Net::HTTP::Post.new(url.path)add标题为add_field

require 'net/http'
require 'uri'
url= URI.parse('http://10.29.3.47:8080/ingest')
request = Net::HTTP::Post.new(url.path)
request.add_field 'Content-Type', 'application/json'
request.body = 'all of my xml data and schema which is far too long to type here'
response = Net::HTTP.start(url.host, url.port) {|http| http.request(request)}