Pythonのrequests
ライブラリを使用してSOAPリクエストを送信できますか?Pythonリクエストを使用してSOAPリクエストを送信
38
A
答えて
74
確かに可能です。
import requests
url="http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL"
#headers = {'content-type': 'application/soap+xml'}
headers = {'content-type': 'text/xml'}
body = """<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:ns0="http://ws.cdyne.com/WeatherWS/" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<ns1:Body><ns0:GetWeatherInformation/></ns1:Body>
</SOAP-ENV:Envelope>"""
response = requests.post(url,data=body,headers=headers)
print response.content
いくつかの注意:
- ヘッダが重要である。ここ
は無地の要求のlibを使用して天気のSOAPサービスを呼び出す例です。ほとんどのSOAP要求は、正しいヘッダーなしでは機能しません。
application/soap+xml
は、おそらく使用するより正しいヘッダである(しかし、weatherserviceこれは、XMLの文字列として応答を返しますtext/xml
- を好む - 私は要求が含まれているあなたは、そのXMLを解析する必要があるだろう
- を簡単にするために。 。プレーンテキストしかし、ベストプラクティスとして、テンプレートとして保存することであろう、そしてあなたは、(例えば)Jinja2のを使用してそれを読み込むことができます - そしてまた、変数を渡し例えば
:
。一部の人々はsudsライブラリについて言及しています。 Sudsはおそらくもっとです。 SOAPとやりとりする方法ですが、WDSLがひどく形成されていると、少しパニックになることがよくあります(TBHは、あなたが施設を扱っているときよりもそうですまだSOAPを使用しています;))。
あなたがそうのような泡で上記の操作を行うことができます
from suds.client import Client
url="http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL"
client = Client(url)
print client ## shows the details of this service
result = client.service.GetWeatherInformation()
print result
注:泡を使用しているとき、あなたはほとんど常にuse the doctorに必要となってしまいます!
最後に、SOAPをデバッグするためのわずかなボーナスです。 TCPdumpはあなたの友人です。 Macでは、あなたはそうのようなTCPdumpとを実行することができます。
sudo tcpdump -As 0
これは、実際にワイヤ上で行くの要求を検査するための参考にすることができます。
上記の2つのコードスニペット は、要旨としても使用できます。
関連する問題
- 1. SOAPでSOAP SOAPリクエストを使用してSOAPを送信する
- 2. Pythonを使用してSOAPリクエストをESBエンドポイントに送信
- 3. FritzBoxにSOAPリクエストを送信
- 4. node-soapを使用して正しいsoapリクエストを送信する
- 5. WIREMOCK(java)を使用したXMLテンプレートでsoapリクエストを送信
- 6. dpd.comへのsoapリクエストをPHPで送信
- 7. POSTリクエスト(リクエストとpython3)を使用して連絡フォームを送信
- 8. リクエストを使用してPythonの送信ボタンを押す
- 9. pythonを使用してHTTPリクエストを送信する - エラー
- 10. Pythonリクエストを使用してフォームを送信できません
- 11. SOAPとJavascript(Google Adwords Sandbox API)を使用してGETリクエストを送信する
- 12. Curlコマンドを使用してSOAPリクエストを送信するreturn http 400
- 13. SOAP UIのようにSOAPを使用してSOAPリクエストを送信する方法
- 14. 投稿の送信リクエストpython
- 15. Pythonを使用してHTTPリクエストを送信してJSONを解析する
- 16. SOAPリクエストをキャプチャする方法Javaアプリケーションによって送信
- 17. リクエストを使用してヘッダー付きのPATCHリクエストを送信する方法
- 18. どのようにSOAPリクエストを送信しますか?
- 19. 角でHTTP経由でSOAPリクエストを送信しますか?
- 20. HttpUrlConnectionを使用してサーバーにリクエストを送信します。
- 21. Javaを使用してXMLRPCリクエストを送信します。
- 22. 送信JWT Pythonを使用してユーザー名/パスワードを含むリクエストを取得
- 23. は、私はいくつかのURLにSOAPリクエストを送信したい私のアプリケーションではSOAPリクエスト
- 24. Python:リクエストでフォームを送信する
- 25. PythonでRequests.PUTを使用してCSVファイルを送信する[400クライアントエラー:不正リクエスト]
- 26. PythonからFlaskへJSONを結果のないリクエストを使用して送信
- 27. Pythonリクエストを使用して認証されたmultipart/form-dataリクエストを送信する
- 28. リクエストを送信しない
- 29. XHRリクエストを使用してファイルを送信する
- 30. javaでソケットを使用してサーバにリクエストを送信する
どのようにこの解決策はありますか? http://stackoverflow.com/q/15569330/2620328 – sihrc
sudsを使用しないでください。 –
@DeepankarBajpeyiなぜか?それは仕事に適した唯一のツールです。 –