web-dev-qa-db-ja.com

SOAPリクエストをどのように送信しますか?

私はSOAPおよびxmlを初めて使用します。多くのチュートリアルを読みましたが、十分に明確なものはないようです。

私は少し混乱しています、どのようにSOAPリクエストを送信しますか?私がこれをしようとした方法は、SOAPリクエストを保存することです)as: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 ^を示すエラーメッセージです。

間違った方法で送信していますか?私を助けてください?

15
SirBT

このドキュメントをブラウザで開いても、リクエストは送信されません。いくつかのオプションがあります:

  • おなじみの言語で小さなスクリプトを作成します。スクリプトは指定されたサーバーに接続し、メッセージに記載されているように本文を含むPOSTリクエストを送信する必要があります
  • 既存のプログラムのいくつかを使用して、あなたのためにそれを行います

あなたが経験の浅い場合、私は間違いなく2番目のオプションをお勧めします。私の個人的なお気に入りはSoapUIです。 here を参照してください。

16
Miljen Mikic

このブログ投稿は私を助けてくれました。 Python SOAPリクエストを使用したリクエスト

#!/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))
7
JohnMudd

Linuxでは、curlを使用してsoap 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

完全なプロセスを説明する link があります。

3
Kihats

私の知る限り、ブラウザがSOAPリクエストを送信することはできません。 Soap UI のようなツールを使用することを提案します

リクエストを送信します。

2
Silmarillium