PythonでSOAP通信するためにやったこと
この記事はPython Advent Calendar 2016 - Qiitaの6日目の記事になります。
こんにちは。@nissy0409240です。
Webを支える技術
突然ですが、「Webを支える技術」という本はご存知でしょうか。
Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)
- 作者: 山本陽平
- 出版社/メーカー: 技術評論社
- 発売日: 2010/04/08
- メディア: 単行本(ソフトカバー)
- 購入: 143人 クリック: 4,320回
- この商品を含むブログ (183件) を見る
理解する為に必要な考えが記載されています。
また、この本の中ではREST形式だけでなくSOAP形式というプロトコルの紹介や、
なぜSOAP形式ではなくREST形式が主流となっていったのかという歴史的経緯も紹介されています。
この本の中ではRESTが普及しつつあると述べられていますが、
現在もSOAP通信を必要とするケースはまだまだ存在しています。
とある機会があり、SOAPライブラリを使ったコードをPythonで書く機会がありました。
本エントリーではその時に使ったライブラリの紹介をしたいと思います。
本エントリーで使用するSOAPライブラリの紹介
早速ではございますが、今回使用したPythonで使えるSOAPライブラリである
suds-jurkoの紹介をさせて頂きます。
bitbucket.org
suds-jurkoとは、現在は開発が止まっているInfrastructure/Fedorahosted-retirement - Fedora Project Wikiをfolkして
現在も継続してメンテナンスをしているモジュールになります。
PyPIを見てみると、
suds · PyPI
sudsは2010年以降、アップデートはされていませんが、
suds-jurko · PyPI
suds-jurkoはsudsの最終更新日以降もアップデートがされており、
下記に掲載した公式ドキュメントには、比較的新しいバージョンのPythonも使用可能との記載もございます。
jurko / suds — Bitbucket
なお、suds-jurkoのインストール自体は下記の通り、
$ pip install suds-jurko Collecting suds-jurko Downloading suds-jurko-0.6.tar.bz2 (143kB) 100% |████████████████████████████████| 153kB 2.8MB/s Installing collected packages: suds-jurko Running setup.py install for suds-jurko ... done Successfully installed suds-jurko-0.6
pip installでインストールすることが出来ます。
実装
早速、suds-jurkoを使ってみようと思います。
#!/usr/bin/env python # coding: utf-8 # from suds.client import Client if __name__ == "__main__": url = "http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL" client = Client(url) print(client)
さきほど掲載したPyPIへのリンクと公式ドキュメントを見てピンと来た方もいらっしゃるかと思いますが、
PyPIには「suds-jurko」というパッケージ名で登録されていますが、
ソースコード自体は「suds」のままなので、
import時は「suds」モジュールを指定すれば問題ありません。
また、実行結果はこちらになります。
$ python suds_jurko_demo.py Suds ( https://fedorahosted.org/suds/ ) version: 0.6 Service ( Weather ) tns="http://ws.cdyne.com/WeatherWS/" Prefixes (1) ns0 = "http://ws.cdyne.com/WeatherWS/" Ports (2): (WeatherSoap) Methods (3): GetCityForecastByZIP(xs:string ZIP) GetCityWeatherByZIP(xs:string ZIP) GetWeatherInformation() Types (8): ArrayOfForecast ArrayOfWeatherDescription Forecast ForecastReturn POP WeatherDescription WeatherReturn temp (WeatherSoap12) Methods (3): GetCityForecastByZIP(xs:string ZIP) GetCityWeatherByZIP(xs:string ZIP) GetWeatherInformation() Types (8): ArrayOfForecast ArrayOfWeatherDescription Forecast ForecastReturn POP WeatherDescription WeatherReturn temp
最後になりますが、今回作成した検証用スクリプトはこちらになります。
github.com
最後までお付き合い頂き、ありがとうございました。
※参考
Pythonで使えるSOAPライブラリについて調べた (2011/02版) - YAMAGUCHI::weblog
GitHub - raquel-ucl/suds-jurko: Playing around with suds