2012-07-12 16 views
11

私はSOAPとXMLの新機能です。多くのチュートリアルを読みましたが、何も分かりにくいものはありません。どのようにSOAPリクエストを送信しますか?

私は混乱しています。ちょうどSOAPリクエストをどのように送信しますか?私がこれをやろうとしたのは、SOAPリクエスト(下記参照)をtestRequest.xmlとして保存することです。

私はそれを送信するためには、ブラウザでファイル(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> 

..

私はお返しに取得することを示すエラーメッセージです: XML解析エラー:構文エラー 場所:localhostの/プロジェクト/のtest.xml 行番号1、列1:POST /MobileCashPayout.asmx HTTP/1.1 ^

私はそれを間違った方法を送っていますか? 私を助けてください?

+0

XMLコンテンツは '<?xml'で始まります。その前のすべてがHTTPヘッダーです。どのプラットフォームを使用していますか? Java? –

答えて

13

この文書をブラウザで開くと、要求は送信されません。あなたは、いくつかのオプションがあります。

  • は、あなたのメッセージ
  • で述べたように、スクリプトがあることを行うために、既存のプログラムの一部を使用し、指定されたサーバに接続し、ボディとPOSTリクエストを送信する必要があり、任意の身近な言語で小さなスクリプトを書きますあなたのために

私は間違いなく2番目のオプションをお勧めします。私の個人的なお気に入りはSoapUIです(hereを参照)。

+0

ありがとう、私は非常にPHPに精通しています。私はいくつかのガイドラインが必要です。 SoapUIは必須のXMLではなくWSDL/WADLを使用するため、Soap UIは本当に役立ちません。どんなガイドラインですか? – SirBT

+1

あなたが正しいです、SoapUIはあなたが使いたいWebサービスの定義を必要とします。 Webサービスは通常.wsdlファイル(WSDL = Web Service Description Language)で定義されているので、呼び出すMobileCashPayoutサービスのWSDLが必要です。おそらく、 /MobileCashPayout.asmx?wsdl(をサービスがある実際のURLに置き換えた場合)と入力してください。あなたが成功すれば教えてください。 –

+0

私はあなたのソリューションを試しましたが、 – SirBT

1

ブラウザが私の知る限り、ソープ要求を送信することはできません。 Soap UI

のようなツールを使用することを提案します。

+0

Soap UIに私を紹介してくれてありがとうございました。問題は、上記の最初のSOAPコードはXMLで記述され、WSDL/WADLでは記述されないということです。 Soap UIはWSDL/WADLを使用し、必要なXMLは使用しません。何か案は? – SirBT

+0

SOAP UIは、XML形式の編集可能な要求をサポートし、XML形式の応答を提供します。 XMLをコピーしてSOAP要求ウィンドウに貼り付けることができます。 – lubosdz

6

このブログの投稿は私を助けました。 Linux上で Python SOAP Request using Requests

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

FYI、それはリンクのみの回答です。リンクが今後も存在しなくなる可能性があるため、リンクの必須の詳細/コードを含める必要があります。 –

+0

ブログのコードをコピーしました。 – JohnMudd

+2

これは良い答えのようです! –

2

あなたは石鹸XMLを送信するためにcurlを使用することができます。ここでそれを行う方法は次のとおりです。あなたがここに

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 

をすることができます作成​​したtestRequest.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 

は、完全なプロセスを説明linkです。

+0

私はいつもカールが好きです。シンプル。 –

関連する問題