Rails Posting xml data to url not the browser?
##Add this one
require 'net/https'
require 'rexml/document'
##Posting xml data to url in rails
xml = xml = "<?xml version='1.0' encoding='UTF-8'?>
<user>
<firstname>#{@user.first_name}</firstname>
<address1>#{@user.address}</address1>
<city>#{@user.city}</city>
<state>#{@user.state}</state>
<zip>#{@user.zip}</zip>
<countrycode>#{@user.country}</countrycode>
<phone>#{@user.phone}</phone>
</user>"
http://www.test.com -->This is not a URL you can navigate to in a browser. It will only be accessible with an XML post.
1)url = URI.parse('http://www.test.com')
2)request = Net::HTTP::Post.new(url.path)
3)request.content_type = 'text/xml'
4)request.body = xml
5)response = Net::HTTP.start(url.host, url.port) {|http| http.request(request)}
6)res = response.body
our response is like
"<?xml version="1.0"?>
<shippingOptions>
<order orderid="1234">
<option type="FC" price="9.95" shippingMethod="USFC" description="Economy to United States"/>
<option type="PM" price="9.95" shippingMethod="USPM" description="Express to United States"/>
<option type="SD" price="15.95" shippingMethod="USSD"
description="Second Business Day to United States"/>
<option type="ON" price="23.95" shippingMethod="OVNT"
description="Next Business Day to United States"/>
</order>
</shippingOptions>"
###for getting the values of xml for response
7)res= document
8)doc = REXML::XPath.each(document, "*//option type") { |element|
type = element.attributes["type"]
cost = element.attributes["price"]
a = Array.new
method = element.attributes["shippingMethod"]
description = element.attributes["description"]
a << {:id => type,
:service => method,
:price => cost }
9) p a.inspect
##Add this one
require 'net/https'
require 'rexml/document'
##Posting xml data to url in rails
xml = xml = "<?xml version='1.0' encoding='UTF-8'?>
<user>
<firstname>#{@user.first_name}</firstname>
<address1>#{@user.address}</address1>
<city>#{@user.city}</city>
<state>#{@user.state}</state>
<zip>#{@user.zip}</zip>
<countrycode>#{@user.country}</countrycode>
<phone>#{@user.phone}</phone>
</user>"
http://www.test.com -->This is not a URL you can navigate to in a browser. It will only be accessible with an XML post.
1)url = URI.parse('http://www.test.com')
2)request = Net::HTTP::Post.new(url.path)
3)request.content_type = 'text/xml'
4)request.body = xml
5)response = Net::HTTP.start(url.host, url.port) {|http| http.request(request)}
6)res = response.body
our response is like
"<?xml version="1.0"?>
<shippingOptions>
<order orderid="1234">
<option type="FC" price="9.95" shippingMethod="USFC" description="Economy to United States"/>
<option type="PM" price="9.95" shippingMethod="USPM" description="Express to United States"/>
<option type="SD" price="15.95" shippingMethod="USSD"
description="Second Business Day to United States"/>
<option type="ON" price="23.95" shippingMethod="OVNT"
description="Next Business Day to United States"/>
</order>
</shippingOptions>"
###for getting the values of xml for response
7)res= document
8)doc = REXML::XPath.each(document, "*//option type") { |element|
type = element.attributes["type"]
cost = element.attributes["price"]
a = Array.new
method = element.attributes["shippingMethod"]
description = element.attributes["description"]
a << {:id => type,
:service => method,
:price => cost }
9) p a.inspect
Comments
Post a Comment