Invoke-WebRequest, POST avec paramètres

198

J'essaie de POSTER vers un uri et d'envoyer le paramètre username=me

Invoke-WebRequest -Uri http://example.com/foobar -Method POST

Comment passer les paramètres en utilisant la méthode POST?

kylex
la source
2
Voir cette réponse à une question similaire.
Ansgar Wiechers

Réponses:

301

Mettez vos paramètres dans une table de hachage et passez-les comme ceci:

$postParams = @{username='me';moredata='qwerty'}
Invoke-WebRequest -Uri http://example.com/foobar -Method POST -Body $postParams
Jellezilla
la source
8
Pour ma future référence autant que pour les informations de n'importe qui d'autre, la table de hachage peut également être passée, à une ligne, directement au paramètre -Body.
cori
2
ajoutez $ ProgressPreference = 'SilentlyContinue' pour accélérer les choses par un facteur de 10.
andrej
94

Pour certains services Web pointilleux, la demande doit avoir le type de contenu défini sur JSON et le corps doit être une chaîne JSON. Par exemple:

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

ou l'équivalent pour XML, etc.

Rob
la source
15

Cela fonctionne simplement:

$body = @{
 "UserSessionId"="12345678"
 "OptionalEmail"="[email protected]"
} | 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
Francesco Mantovani
la source
3

Commande unique sans variables ps lors de l'utilisation en JSONtant que corps {lastName:"doe"}pour l'appel api POST:

Invoke-WebRequest -Headers @{"Authorization" = "Bearer N-1234ulmMGhsDsCAEAzmo1tChSsq323sIkk4Zq9"} `
                  -Method POST `
                  -Body (@{"lastName"="doe";}|ConvertTo-Json) `
                  -Uri https://api.dummy.com/getUsers `
                  -ContentType application/json
JerryGoyal
la source