Simple HTTP Post Xml request

Hi,
I’m trying to post a xml to a server for encoding a file
(http://www.encoding.com/wdocs/SampleScripts).

Basically I just need a simple HTTP post where I specify an xml.
I’m trying to use Net::HTTP post but in my case I don’t have a path to
specify as first parameter.
I jut need to send HTTP(S) POST request with single parameter named xml.
The server response is a normal XML document.

Thanks for any help on this.
Bye

Me Me wrote:

Hi,

  1. I’m trying to post a xml to a server…

2)but in my case I don’t have a path to
specify as first parameter.

Those are incompatible statements. Servers live somewhere on the net,
and therefore they have url’s that identify their location.

On Tue, Feb 10, 2009 at 8:21 PM, Me Me [email protected] wrote:

Hi,
I’m trying to post a xml to a server for encoding a file
(http://www.encoding.com/wdocs/SampleScripts).

Basically I just need a simple HTTP post where I specify an xml.
I’m trying to use Net::HTTP post but in my case I don’t have a path to
specify as first parameter.
I jut need to send HTTP(S) POST request with single parameter named xml.
The server response is a normal XML document.

If the http server doesn’t care about the path can’t you just use any?
such
as ‘/’

thanks for answering.

I tried:

require ‘net/http’
require ‘rexml/document’

url=‘http://manage.encoding.com/
http=Net:HTTP.new(url)
xml_response = http.post(‘/’,‘’)

and I get
getaddrinfo: no address associated with hostname (Socket Error)

Me Me wrote:

thanks for answering.

I tried:

require ‘net/http’
require ‘rexml/document’

url=‘http://manage.encoding.com/
http=Net:HTTP.new(url)
xml_response = http.post(‘/’,‘’)

and I get
getaddrinfo: no address associated with hostname (Socket Error)

The server response is a normal XML document.

Where is “the server” that you are referring to? And by “where” I mean
what is its url?

On Tue, Feb 10, 2009 at 4:52 PM, Me Me [email protected] wrote:

I tried:

url=‘http://manage.encoding.com/
http=Net:HTTP.new(url)
xml_response = http.post(‘/’,‘’)

and I get
getaddrinfo: no address associated with hostname (Socket Error)

With the disclaimer than i haven’t used net/http much, the following
three forms all seem to post to manage.encoding.com and get back a 200
OK response.

require ‘net/http’
require ‘uri’

this is the closest form to the one you tried

note that the http protocol is excluded

(presumably because we’re explicitly constructing an HTTP object)

http = Net::HTTP.new(‘manage.encoding.com’)
response = http.post(‘/’, “xml=#{some_xml_data}”)

this form uses the post_form class method and a parsed uri

note the trailing slash is necessary

note also the (cleaner) use of a hash over a string for post params

url = URI.parse(‘http://manage.encoding.com/’)
response = Net::HTTP.post_form(url, { ‘xml’ => some_xml_data })

this form opens the tcp connection and http session,

ensuring they are closed after the block executes

url = URI.parse(‘http://manage.encoding.com/’)
Net::HTTP.start(url.host, url.port) do |http|
response = http.post(url.path, “xml=#{some_xml_data}”)
end

HTH,
lasitha

this is the closest form to the one you tried

note that the http protocol is excluded

(presumably because we’re explicitly constructing an HTTP object)

http = Net::HTTP.new(‘manage.encoding.com’)
response = http.post(‘/’, “xml=#{some_xml_data}”)

Thanks a lot !!!
This is really what I needed.