Как вы отправляете запрос SOAP?
Я новичок в SOAP и xml. Я прочитал несколько руководств, но ничего не кажется достаточно ясным.
Я немного смущен, Как же отправить запрос SOAP? Способ, которым я пытался это сделать, - сохранить мой запрос SOAP (как показано ниже) как: testRequest.xml.
POST /MobileCashPayout.asmx HTTP/1.1
Host: 192.168.1.80
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>
<Payout xmlns="http://www.mycel.com/">
<Username>string</Username>
<Password>string</Password>
<referenceID>string</referenceID>
<sourceMsisdn>string</sourceMsisdn>
<destMsisdn>string</destMsisdn>
<Amount>decimal</Amount>
<MobilePin>string</MobilePin>
<cashInformation>string</cashInformation>
<merchantName>string</merchantName>
</Payout>
</soap12:Body>
</soap12:Envelope>
Затем я открою файл (testRequest.xml) в браузере, чтобы он был отправлен.
то, что я получаю взамен, является сообщением об ошибке:
Ошибка анализа XML: синтаксическая ошибка
Расположение: localhost/projects/test.xml
Номер строки 1, столбец 1: POST/MobileCashPayout.asmx HTTP/1.1
^
Я посылаю это неправильно?
Пожалуйста, помогите мне?
Ответы
Ответ 1
Открытие этого документа в браузере не будет отправлять запрос. У вас есть несколько вариантов:
- напишите немного script на любом знакомом языке, script должен подключиться к указанному серверу и отправить запрос POST с телом, как указано в вашем сообщении
- используйте некоторые из существующих программ, чтобы сделать это для вас
Если вы неопытный, я бы определенно рекомендовал второй вариант. Моим личным фаворитом является SoapUI, см. здесь.
Ответ 2
Это сообщение в блоге помогло мне.
Запрос SOAP Python с использованием запросов
#!/usr/bin/env python
# encoding: utf-8
import requests
from XML import XML
request = u"""<?xml version="1.0" encoding="utf-8"?>
<soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://www.webserviceX.NET/">
<soapenv:header>
<soapenv:body>
<web:conversionrate>
<web:fromcurrency>GBP</web:fromcurrency>
<web:tocurrency>CHF</web:tocurrency>
</web:conversionrate>
</soapenv:body>
</soapenv:header></soapenv:envelope>"""
encoded_request = request.encode('utf-8')
headers = {"Host": "www.webservicex.net",
"Content-Type": "text/xml; charset=UTF-8",
"Content-Length": len(encoded_request)}
response = requests.post(url="http://www.webservicex.net/CurrencyConvertor.asmx",
headers = headers,
data = encoded_request,
verify=False)
print unicode(XML(response.text))
Ответ 3
В linux вы можете использовать curl
для отправки мыла xml. Вот как это сделать:
curl --header "Content-Type: text/xml;charset=UTF-8" --header "SOAPAction: ACTION_YOU_WANT_TO_CALL" --data @FILE_NAME URL_OF_THE_SOAP_WEB_SERVICE_ENDPOINT
Используя созданный файл testRequest.xml
, вы можете
curl --header "Content-Type: text/xml;charset=UTF-8" --header "SOAPAction: ACTION_YOU_WANT_TO_CALL" --data @testRequest.xml URL_OF_THE_SOAP_WEB_SERVICE_ENDPOINT
Вот ссылка которая описывает полный процесс.
Ответ 4
Вы не можете отправить запрос на мыло в браузере, насколько мне известно.
Я предлагаю вам использовать такой инструмент, как Мыльный интерфейс
для отправки запроса.