Comment puis-je obtenir le corps d'une requête web qui a retourné 400 mauvaise requête D'Invoke-RestMethod

Lorsque j'exécute l'instruction suivante

Invoke-RestMethod "https://api.mysite.com/the/endpoint" `
    -Body (ConvertTo-Json $data) `
    -ContentType "application/json" `
    -Headers $DefaultHttpHeaders `
    -Method Post

le point de terminaison retourne 400 Bad Request, qui fait que PowerShell affiche le message non-très utile suivant:

Invoke-WebRequest : The remote server returned an error: (400) Bad Request.
At line:1 char:1
+ Invoke-WebRequest "https://api.mysite.com/the/endpoint" -Body  ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand

Comment puis-je obtenir le corps de la réponse, qui pourrait me dire ce qui n'allait pas avec la demande que j'ai envoyé?

18
demandé sur Ansgar Wiechers 2016-03-14 14:44:57

5 réponses

Selon Invoke-RestMethod documentation, cmdlet peut renvoyer différents types selon le contenu qu'il reçoit. Assing applet de commande de sortie à une variable ($resp = Invoke-RestMethod (...)) et ensuite vérifier si le type est