Como hacer un XML request


#1

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!


#2

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


#3

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 removed_email_address@domain.invalid:


#4

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


#5

Buenas,

On Saturday 23 June 2007 23:50:08 removed_email_address@domain.invalid 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