Создание запроса SOAP с использованием XML в Rails

Я хочу сделать запрос к веб-службе SOAP, но не хочу устанавливать какие-либо драгоценные камни. Есть ли способ просто сделать запрос с использованием простого XML?

Я думаю, что это тривиально, но я мог что-то упустить, потому что все реализации/учебники использовали драгоценный камень.

Я думаю, что ответ SOAP можно обрабатывать и как ответ XML, верно?

Запрос такой:

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>

person Jon Romero    schedule 26.07.2009    source источник


Ответы (1)


Вы можете сделать это:

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

Этот метод будет возвращать XML-ответ.

person Aaron Rustad    schedule 26.07.2009
comment
Используя Ruby 1.9.2 и Rails 3.2.12, мне пришлось удалить http:// из имени хоста. Кроме того, используя SOAP 1.1, пришлось установить «Content-Type» на text/xml Спасибо! - person Josh; 20.01.2014
comment
Я пытаюсь решить аналогичную проблему и создал аналогичное решение. но сервер, на который я пытаюсь опубликовать, требует аутентификации пользователя. есть ли у вас какие-либо советы по настройке учетных данных? - person Noam Hacker; 20.01.2016
comment
Что это за переменная path? - person Arpit; 10.11.2016