我想在 PowerShell 中发出 POST 请求。以下是 Postman 中的正文详细信息。
{
"@type":"login",
"username":"xxx@gmail.com",
"password":"yyy"
}
如何在 PowerShell 中传递它?
我想在 PowerShell 中发出 POST 请求。以下是 Postman 中的正文详细信息。
{
"@type":"login",
"username":"xxx@gmail.com",
"password":"yyy"
}
如何在 PowerShell 中传递它?
您应该能够执行以下操作:
$params = @{"@type"="login";
"username"="xxx@gmail.com";
"password"="yyy";
}
Invoke-WebRequest -Uri http://foobar.com/endpoint -Method POST -Body $params
这会将帖子作为正文发送。但是 - 如果您想将此作为 Json 发布,您可能需要明确说明。要将其发布为 JSON,您可以指定 ContentType 并使用以下方法将正文转换为 Json
Invoke-WebRequest -Uri http://foobar.com/endpoint -Method POST -Body ($params|ConvertTo-Json) -ContentType "application/json"
额外:您还可以使用 Invoke-RestMethod 处理 JSON 和 REST api(这将为您节省一些额外的反序列化行)
用于Invoke-RestMethod
使用 REST-API。将 JSON 保存为字符串并将其用作正文,例如:
$JSON = @'
{"@type":"login",
"username":"xxx@gmail.com",
"password":"yyy"
}
'@
$response = Invoke-RestMethod -Uri "http://somesite.com/oneendpoint" -Method Post -Body $JSON -ContentType "application/json"
如果您使用 Powershell 3,我知道 有一些问题Invoke-RestMethod
,但您应该可以Invoke-WebRequest
用作替代品:
$response = Invoke-WebRequest -Uri "http://somesite.com/oneendpoint" -Method Post -Body $JSON -ContentType "application/json"
如果您不想每次都编写自己的 JSON,可以使用哈希表并使用 PowerShell 将其转换为 JSON,然后再发布。前任。
$JSON = @{
"@type" = "login"
"username" = "xxx@gmail.com"
"password" = "yyy"
} | ConvertTo-Json
@Frode F. 给出了正确的答案。
顺便说一句,Invoke-WebRequest
还会打印200 OK
出很多 bla、bla、bla... 这可能很有用,但我仍然更喜欢Invoke-RestMethod
更轻的。
另外,请记住,您| ConvertTo-Json
只需要用于正文,而不是标题:
$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
然后您可以| ConvertTo-HTML
在请求末尾附加 a 以获得更好的可读性