Web API としてポピュラーなのは REST なのですが、SOAP も Web API の一種です。
SOAP(Simple Object Access Protocol) は、データ ハンドリングに XML を使用しています。
XML を使用しているので、様々なプラットフォームや処理系が対応しており、ビジネス用途の Web サービスとしてよく使われています。
さて、PowerShell で SOAP を使う場合にはどうしましょうか...
最初良くわからなくて、XML にメソッドとプロパティをセットしたリクエスト用の XML を PowerShell で書いて(PowerShell は XML を扱う機能を持っている)、.NET を使って XML の送受信しようとしていたのですが... これがなかなかハードル高いんですよね。
色々調べていると、サイトが実装している SOAP の機能を XML で提示する WSDL(Web Services Description Language) ってのがあるのを知り、こいつを New-WebServiceProxy がサポートしていることが分かりました。
つまり、SOAP を提供しているサイトが WSDL も提供していれば、PowerShell でも簡単に SOAP
がハンドリングできるのです。
(SOAP 仕様と XML をにらめっこしていた時間を返して !! w)
こんな感じで使います
$WebServiceProxy = New-WebServiceProxy -Uri http://hoge.example.com/SOAP/hogehoge?wsdl -Credential pyopyo |
-Uri に WSDL を返してくれる URI を渡すと、SOAP サービスのオブジェクトになってくれるのです。
なんとステキなコマンドレット !!
認証が必要であれば、-Credential で資格情報を与えれば OK
オブジェクトになっているので、Get-Member でメソッドやプロパティが確認できます。
公開されてはいるのですがテスト用ではないっぽいので URI はマスクご容赦
通常のオブジェクトと同様に、Definition に使い方が通常書いてあるので、ここを読めばハンドリングできるようになっています。
戻り値もオブジェクトとして帰ってくるので、普通に PowerShell を使うのと何ら違いは無いです。
オブジェクトが不要になったら、後始末で Dispose します。
$WebServiceProxy.Dispose() |
フリーオープンになっている SOAP サイトが少ないのでここで動作確認できますってサイトを見つけられなかったのですが、動作確認をするのでしたら SoapUI を使えばテスト用のサイトが作れるようです。
The World's Most Popular API Testing Tool | SoapUI
https://www.soapui.org/
平文 ID Password から 資格情報を作成する
http://www.vwnet.jp/windows/PowerShell/MakePSCredential.htm
PowerShell で VirusTotal の Web API を使ったファイルの安全性を確認する
http://www.vwnet.jp/windows/PowerShell/2016100501/CheckVirusTotalWebAPI.htm
PowerShell で Web API をハンドリングする
https://www.vwnet.jp/windows/PowerShell/2023082201/RESTAPI.htm
Copyright © MURA All rights reserved.