2009-07-26 9 views
5

Deseo realizar una solicitud a un servicio web SOAP pero no quiero instalar ninguna gema. ¿Hay alguna manera de hacer la solicitud utilizando XML simple?Realización de una solicitud SOAP utilizando XML en Rails

Creo que es trivial, pero podría haber algo que me he perdido, porque todas las implementaciones/tutoriales usaban una gema.

Creo que la respuesta SOAP, se puede manejar también como una respuesta XML ¿no?

La solicitud es la siguiente:

POST /services/tickets/issuer.asmx HTTP/1.1 
Host: demo.demo.com 
Content-Type: application/soap+xml; charset=utf-8 
Content-Length: length 

<?xml version="1.0" encoding="utf-8"?> 
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> 
    <soap12:Body> 
    <Tick xmlns="http://demo.com/test/test"> 
     <Request> 
     <Username>string</Username> 
     <Password>string</Password> 
     <AcquirerId>int</AcquirerId> 
     <RequestType>string</RequestType> 
     <ExpirePreauth>unsignedByte</ExpirePreauth> 
     <BitPerSec>int</BitPerSec> 
     <Office>string</Office> 
     </Request> 
    </Tick> 
    </soap12:Body> 
</soap12:Envelope> 

Respuesta

6

Usted puede hacer esto:

def post_xml(path, xml) 
    host = "http://demo.demo.com" 
    http = Net::HTTP.new(host) 
    resp = http.post(path, xml, { 'Content-Type' => 'application/soap+xml; charset=utf-8' }) 
    return resp.body 
end 

La respuesta XML serían devueltos por este método.

+0

Usando Ruby 1.9.2 y Rails 3.2.12 - Tuve que eliminar el "http: //" del nombre de host. Además, usando SOAP 1.1 y tuve que configurar 'Content-Type' a 'text/xml' ¡Gracias! – Josh

+1

Estoy tratando de resolver un problema similar y he creado una solución similar. pero el servidor en el que intento publicar requiere autenticación de usuario. ¿Tiene algún consejo sobre cómo configurar las credenciales? –

+0

¿Qué es esta variable 'path'? – Arpit

Cuestiones relacionadas