开发者

Unable to execute http POST with XML data in Ruby on Rails

I am trying to pass data from the database in XML format to an API. I've written the following code in the controller.

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 开发者_Go百科= xml

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

I have created a XML file with XML builder, but I'm not able to pass this XML data to the API. The above code doesn't leave any trace of error or any respective action being preformed in the logs.


Hey ! Finally figured it out

I am able to pass the data to API by making the following changes:

1)Initially, the XML data was copied into a string by

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

2) Later, used this 'out_string' to pass xml data. via request.body = out_string; as follows ,

   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)
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜