Invoke-WebRequest、パラメーター付きのPOST


回答:


300

パラメータをハッシュテーブルに入れて、次のように渡します。

$postParams = @{username='me';moredata='qwerty'}
Invoke-WebRequest -Uri http://example.com/foobar -Method POST -Body $postParams

8
他の人の情報と同じくらい将来の参照のために、ハッシュテーブルをワンライナースタイルで-Bodyパラメーターに直接渡すこともできます。
cori

2
アップ10倍高速なものに$ ProgressPreference =「SilentlyContinueという」を追加
アンドレイ

93

一部のうるさいWebサービスでは、リクエストのコンテンツタイプをJSONに設定し、本文をJSON文字列にする必要があります。例えば:

Invoke-WebRequest -UseBasicParsing http://example.com/service -ContentType "application/json" -Method POST -Body "{ 'ItemID':3661515, 'Name':'test'}"

またはXMLと同等のものなど


15

これはうまくいきます:

$body = @{
 "UserSessionId"="12345678"
 "OptionalEmail"="MyEmail@gmail.com"
} | ConvertTo-Json

$header = @{
 "Accept"="application/json"
 "connectapitoken"="97fe6ab5b1a640909551e36a071ce9ed"
 "Content-Type"="application/json"
} 

Invoke-RestMethod -Uri "http://MyServer/WSVistaWebClient/RESTService.svc/member/search" -Method 'Post' -Body $body -Headers $header | ConvertTo-HTML

3

POST api呼び出しのJSON本体として使用する場合、ps変数のない単一のコマンド{lastName:"doe"}

Invoke-WebRequest -Headers @{"Authorization" = "Bearer N-1234ulmMGhsDsCAEAzmo1tChSsq323sIkk4Zq9"} `
                  -Method POST `
                  -Body (@{"lastName"="doe";}|ConvertTo-Json) `
                  -Uri https://api.dummy.com/getUsers `
                  -ContentType application/json
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.