2013-02-22 2 views
1

Допустим, у меня есть запись в блоге, которую создает пользователь, и я хочу отправить все данные на внешний веб-сервис в виде XML с определенной схемой, чтобы он мог проникнуть в эту сеть. оказание услуг.Rails 3 Отправить на внешнюю веб-службу

Я смотрел в ActionDispatch :: Request

И я прочитал этот пост 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 единственного соответствия тела является «телом() ", который не принимает аргументов. Итак, как мне передать содержимое моего сообщения в веб-службу?

Благодарим за помощь!

+0

Обратите внимание, что использование 'Net :: HTTP' напрямую является одним из многих вариантов. Вот некоторые другие: https://www.ruby-toolbox.com/categories/http_clients –

ответ

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)} 
Смежные вопросы