Como hacer un XML request

Hola a todos, llevo googleando todo el dia y no he sido capaz de
encontrar el modo de hacer un request enviando un xml (y recibir otro
xml como respuesta)… Alguien sabe donde tengo que mirar??

Muchisimas gracias por adelantado!

Hola,

una forma es tirar de la librería estándar de ruby net/http. El ejemplo
de post directamente de la
documentación
require ‘net/http’
require ‘uri’

#1: Simple POST
res = 

Net::HTTP.post_form(URI.parse(‘http://www.example.com/search.cgi’),
{‘q’=>‘ruby’, ‘max’=>‘50’})

puts res.body

Luego si el xml de vuelta lo quieres parsear, una forma sencilla es usar
xml simple. De hecho si el post XML es a una acción rails, se parsea
automáticamente de xml a variables (suponiendo que el tipo en la
cabecera http esté bien puesto).

saludos,

javier ramírez

Recibir un xml y parsearlo es la parte que he conseguido sin
problemas. Lo que aun no he encontrado es como enviar un xml en el
request… Hay un parametro &block en get_response que parecia
prometedor, pero no he encontrado nada en la documentacion :frowning:

Si alguien lo ha hecho estaria muy agradecido si me contara. De todas
maneras seguire dando caña a google…

Saludos!

Quoting javier ramirez [email protected]:

es justamente lo que te copiaba en el mensaje anterior. Usas la librería
net-http y envías lo que quieras mediante el método post. Si le pones el
content-type a ‘text/xml’ ya lo tienes.

suerte,

javier ramirez

Buenas,

On Saturday 23 June 2007 23:50:08 [email protected] wrote:

Recibir un xml y parsearlo es la parte que he conseguido sin
problemas. Lo que aun no he encontrado es como enviar un xml en el
request… Hay un parametro &block en get_response que parecia
prometedor, pero no he encontrado nada en la documentacion :frowning:

Si alguien lo ha hecho estaria muy agradecido si me contara. De todas
maneras seguire dando caña a google…

yo suelo hacer algo así:

require ‘net/http’

http_server = Net::HTTP.new(‘www.example.com’, 80)
req = Net::HTTP::Post.new(‘/path’)
req.content_type = ‘text/xml’
req.form_data = mi_doc_xml
res = http_server.start { |http| http.request(req) }.body
return res

Ciao