Rails публикува xml за защитен API на уеб услуга

Опитвам се да използвам rails 4.0, за да създам API за уеб услуга, която изисква директна xml публикация до техния защитен сървър.

Имам формуляр, който изпраща `:action => "testSubmit", за да задейства следния код в моя контролер, който съм съставил след часове (предимно остарели) изследвания и отстраняване на грешки.

def testSubmit

  xml = Builder::XmlMarkup.new
  xml.instruct!
  xml.sale do
    xml.tag! 'tag-1', "INFO_HERE"
    xml.tag! 'tag-2', "MORE_INFO"
    xml.amount "100.00"
  end

  uri = URI('https://secure.abc.com')

  Net::HTTP.start(uri.host, uri.port,
    :use_ssl => uri.scheme == 'https') do |http|
    response = http.post("/api/some/path", xml.to_s)
    flash[:notice] = "Sent?"
  end    



end

Рамката на релсите пренасочва към изгледа testSubmit.html.erb с присъстващия flash, така че всичко показва, че може да работи, но ако се опитам да прочета данните за отговора, изглежда, че е празен. Например, ако включа <%= response %> в моя изглед, виждам:

#<ActionDispatch::Response:0x007fd167ddef60>

но <%= response.body %> не прави нищо...

Очаквам отговорът да бъде конкретен xml, който проверих с помощта на PHP и Curl, както и добавката за firefox „Poster“


person msanteler    schedule 09.01.2014    source източник


Отговори (1)


Реших го. Работен код по-долу.

 def testSubmit

      xml = Builder::XmlMarkup.new
      xml.instruct!
      xml.sale do
        xml.tag! 'tag-1', "INFO_HERE"
        xml.tag! 'tag-2', "MORE_INFO"
        xml.amount "100.00"
      end

      uri = URI('https://secure.abc.com')

      Net::HTTP.start(uri.host, uri.port,
        :use_ssl => uri.scheme == 'https') do |http|
        @xml = xml.target!
        @response = http.post(uri.path, @xml, initheader = {'Content-Type' =>'text/xml'})
        flash[:notice] = "Sent?"
      end    

 end

Това: <%= @response.body %> Работи добре...

person msanteler    schedule 10.01.2014