2013-02-22 76 views
1

可以說我有一個博客文章,用戶正在創建,我想發送所有的數據到一個外部的Web服務作爲XML與特定的模式,因此它可以被攝入到該網站服務。Rails 3發佈到外部網絡服務

我一直在尋找進入ActionDispatch ::請求

和我讀到這個Using Ruby on Rails to POST JSON/XML data to a web service後,並回答

不過,我得到了一個錯誤說CONTENT_TYPE是不是要求一個有效的方法。所以我改變了這一行來調用標題方法,並用適當的信息爲內容類型創建標題

好吧...那麼現在要去哪裏?

這是我到目前爲止的代碼:

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適配體的唯一的事情就是「體()「,它不需要參數。那麼,如何將我的帖子的內容傳遞給Web服務?

謝謝你的幫助!

+0

請注意,直接使用'Net :: HTTP'是許多選項之一。以下是其他一些:https://www.ruby-toolbox.com/categories/http_clients – 2013-02-22 15:21:22

回答

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)}