Невозможно выполнить http POST с данными XML в Ruby on Rails - PullRequest
1 голос
/ 05 апреля 2011

Я пытаюсь передать данные из базы данных в формате XML в API.Я написал следующий код в контроллере:

require 'active_support/builder' unless defined?(Builder)
require 'uri'
require 'net/http'

 def gen_xml
      xml = Builder::XmlMarkup.new
      @customers = Customer.find(:all)

      url = "http://.......................xml?";

      request = Net::HTTP::Post.new(url)
      request.add_field "Content-Type", "application/xml"
      request.body = xml

      uri = URI.parse(url)
      http = Net::HTTP.new(uri.host, uri.port)
      response = http.request(request)
  end

Я создал файл XML с помощью XML Builder, но я не могу передать эти данные XML в API.Приведенный выше код не оставляет следов ошибок или каких-либо соответствующих действий в журналах.

1 Ответ

5 голосов
/ 11 апреля 2011

Эй! Наконец-то разобрался

Я могу передать данные в API, внеся следующие изменения:

1) Первоначально данные XML были скопированы в строку с помощью

x = Builder::XmlMarkup.new(:target => out_string = "<?xml version='1.0' encoding='UTF-8'?>\n", :indent =>1) 

2) Позже, использовали эту 'out_string' для передачи данных XML. через request.body = out_string; следующим образом,

   uri = URI.parse("http:............")

        http = Net::HTTP.new(uri.host, uri.port)
        request = Net::HTTP::Post.new(uri.request_uri)
        request.body = out_string

        response = http.request(request)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...