2011-04-05 29 views
1

我试图将XML格式的数据库中的数据传递给API。我在控制器中编写了下面的代码。
无法在Ruby on Rails中使用XML数据执行http POST

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文件,但我不能给这个XML数据传递给API。上述代码不会在日志中留下任何错误或任何相应操作的痕迹。

回答

5

嘿!最后想通了

我能够通过以下的改变将数据传递到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)