PowerShellからWebサービスを利用する
AmazonWebServiceを利用してみよう!
STEP1:AmazonWebServiceへのリファレンスコードを用意する
- VB2005を起動してWindowsアプリケーションの新規プロジェクトを作成。
プロジェクト名は任意。 - 「Web参照の追加」で以下のURLを追加。
http://webservices.amazon.com/AWSECommerceService/JP/AWSECommerceService.wsdl
Web参照名は「AmazonWebService」に設定して参照の追加ボタンを押下する。 - プロジェクトを保存した後、Web References\AmazonWebServiceの下に自動生成されたファイルの中にある「Reference.vb」を任意の場所にコピーしておく。
今回は「C:\AmazonWebService\Reference.vb」に置きます。 - Reference.vbを開き、79行目を書き換える。
変更前:Me.Url = 〜〜
変更後:Me.Url = "http://soap.amazon.co.jp/onca/soap?Service=AWSECommerceService"
(79行目はapp.configから設定を読み込んでいる部分で、書き換えることでapp.configとの関連を排除しています。)
STEP2:AmazonWebServiceを利用するスクリプトを用意する
以下の「Run-AmazonWebService.ps1」をパスの通った所に置く。
ただし、[アクセスキー]という箇所は、各自の「Amazon Web Serviceのアクセスキー」を貼り付けてください。
アクセスキーの取得方法は「アマゾンのWebサービスを利用するには」でググれば詳しい解説が見つかります。
Run-AmazonWebService.ps1
Param([String]$refVB, [String]$asin) # AmazonWebServiceを利用するライブラリを生成する $files = @($refVB) $provider = New-Object Microsoft.VisualBasic.VBCodeProvider $params = New-Object CodeDom.Compiler.CompilerParameters $params.GenerateInMemory = $True $refDLL = "System.Xml.dll","system.web.services.dll" $params.ReferencedAssemblies.AddRange($refDLL) $compilerResults = $provider.CompileAssemblyFromFile($params, $files) # AmazonWebServiceを利用してASINで書籍を検索する $azn = New-Object AmazonWebService.AWSECommerceService $req = New-Object AmazonWebService.ItemLookupRequest $req.ItemId = @($asin) $req.IdType = [AmazonWebService.ItemLookupRequestIdType]::ASIN $req.Condition = [AmazonWebService.Condition]::All $req.ResponseGroup = @("Large", "Images", "ItemAttributes") $look = New-Object AmazonWebService.ItemLookup $look.AWSAccessKeyId = "[アクセスキー]" $look.Request = $req $res = $azn.ItemLookup($look) $r = $res.Items $bk = $r[0].Item[0] # ASINで検索した書籍情報を表示する Write-Host $bk.ItemAttributes.Title Write-Host "<Author>" Write-Host $bk.ItemAttributes.Author[0] Write-Host "<Publisher>" Write-Host $bk.ItemAttributes.Publisher Write-Host "<Image>" Write-Host $bk.MediumImage.URL
STEP3:AmazonWebServiceを利用する
Run-AmazonWebService.ps1の使用方法
Run-AmazonWebService [リファレンスコードのパス] [ASINコード]
- リファレンスコード:STEP1で作成したReference.vb
- ASINコード:アマゾンで商品の詳細に載っているコード
Run-AmazonWebService.ps1の実行例
Windows Powershell in Action
PS C:\> Run-AmazonWebService.ps1 "C:\AmazonWebService\Reference.vb" "1932394907" <Title> Windows Powershell in Action <Author> Bruce Payette <Publisher> Manning Pubns Co <Image> http://ec2.images-amazon.com/images/P/1932394907.01._SCMZZZZZZZ_V34376568_.jpg