Simple HTTP Post Xml request


#1

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


#2

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.


#3

On Tue, Feb 10, 2009 at 8:21 PM, Me Me removed_email_address@domain.invalid 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 ‘/’


#4

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)


#5

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?


#6

On Tue, Feb 10, 2009 at 4:52 PM, Me Me removed_email_address@domain.invalid 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


#7

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.