2009-07-26 11 views
5

Chcę wysłać żądanie do usługi sieciowej SOAP, ale nie chcę instalować żadnych klejnotów. Czy jest jakiś sposób, aby złożyć wniosek za pomocą zwykłego kodu XML?Tworzenie żądania SOAP za pomocą XML w Railsach

Myślę, że to trywialne, ale może być coś, co przegapiłem, ponieważ wszystkie implementacje/tutoriale używały klejnotu.

Myślę, że odpowiedź SOAP, może być obsługiwany również jako odpowiedź XML?

Wniosek jest taki:

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> 

Odpowiedz

6

Można to zrobić:

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 

Odpowiedź XML będzie zwrócony tą metodą.

+0

Używanie Ruby 1.9.2 i Rails 3.2.12 - Musiałem usunąć "http: //" z nazwy hosta. Ponadto, używając SOAP 1.1 i musiał ustawić "Content-Type" na "text/xml" Dzięki! – Josh

+1

Próbuję rozwiązać podobny problem i skonfigurowałem podobne rozwiązanie. ale serwer, który próbuję opublikować, wymaga uwierzytelnienia użytkownika. czy masz jakieś wskazówki dotyczące konfigurowania poświadczeń? –

+0

Co to jest zmienna 'ścieżka'? – Arpit

Powiązane problemy