2011-04-05 84 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)