Forum: Ruby simple HTTP Post Xml request

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Me M. (Guest)
on 2009-02-10 12:22
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
7stud -. (Guest)
on 2009-02-10 13:08
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.
Dylan E. (Guest)
on 2009-02-10 13:13
(Received via mailing list)
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 '/'
Me M. (Guest)
on 2009-02-10 13:23
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)
7stud -. (Guest)
on 2009-02-10 13:45
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?
lasitha (Guest)
on 2009-02-10 14:53
(Received via mailing list)
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
Me M. (Guest)
on 2009-02-10 15:18
> # 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.
This topic is locked and can not be replied to.