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.
40700f4fc57ab1ed04e235c7b7ae4d50?d=identicon&s=25 Me Me (melmoth)
on 2009-02-10 11: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
54404bcac0f45bf1c8e8b827cd9bb709?d=identicon&s=25 7stud -- (7stud)
on 2009-02-10 12: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.
42773b24e0c3fb506a8a875c058a9dd7?d=identicon&s=25 Dylan Evans (Guest)
on 2009-02-10 12:13
(Received via mailing list)
On Tue, Feb 10, 2009 at 8:21 PM, Me Me <emanuelef@tiscali.it> 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 '/'
40700f4fc57ab1ed04e235c7b7ae4d50?d=identicon&s=25 Me Me (melmoth)
on 2009-02-10 12: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)
54404bcac0f45bf1c8e8b827cd9bb709?d=identicon&s=25 7stud -- (7stud)
on 2009-02-10 12: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?
E16e84e861c1815ce11ba7bd851c857d?d=identicon&s=25 lasitha (Guest)
on 2009-02-10 13:53
(Received via mailing list)
On Tue, Feb 10, 2009 at 4:52 PM, Me Me <emanuelef@tiscali.it> 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
40700f4fc57ab1ed04e235c7b7ae4d50?d=identicon&s=25 Me Me (melmoth)
on 2009-02-10 14: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.