2009-07-26 13 views
5

Desidero effettuare una richiesta a un servizio Web SOAP ma non desidero installare gemme. Esiste un modo per effettuare semplicemente la richiesta usando un semplice XML?Esecuzione di una richiesta SOAP utilizzando XML in Rails

Penso che sia banale ma potrebbe esserci qualcosa che ho perso, perché tutte le implementazioni/tutorial utilizzavano un gioiello.

Penso che la risposta SOAP, possa essere gestita anche come risposta XML giusto?

La richiesta è questa:

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> 

risposta

6

Si potrebbe fare questo:

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 risposta XML sarebbe restituito da questo metodo.

+0

Utilizzo di Ruby 1.9.2 e Rails 3.2.12 - Ho dovuto rimuovere "http: //" dal nome host. Inoltre, usando SOAP 1.1 e si doveva impostare 'Content-Type' su 'text/xml' Grazie! – Josh

+1

Sto cercando di risolvere un problema simile e ho impostato una soluzione simile. ma, il server che sto cercando di pubblicare richiede l'autenticazione dell'utente. hai qualche consiglio su come impostare le credenziali? –

+0

Cos'è questa variabile 'path'? – Arpit

Problemi correlati