无法在Ruby on Rails中使用XML数据执行http POST

Goo*_*ner 1 api http ruby-on-rails-3

我试图将数据从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
Run Code Online (Sandbox Code Playgroud)

我用XML构建器创建了一个XML文件,但是我无法将这个XML数据传递给API.上面的代码不会在日志中留下任何错误痕迹或任何相应的操作.

Goo*_*ner 5

嘿!最后想通了

我能够通过进行以下更改将数据传递给API:

1)最初,XML数据被复制到一个字符串中

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

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)
Run Code Online (Sandbox Code Playgroud)