liv*_*arn 36 rest powershell powershell-5.0
我想在PowerShell中发出POST请求.以下是邮递员的身体细节.
{
"@type":"login",
"username":"xxx@gmail.com",
"password":"yyy"
}
Run Code Online (Sandbox Code Playgroud)
如何在PowerShell中传递此内容?
Har*_* F. 48
您应该能够执行以下操作:
$params = @{"@type"="login";
"username"="xxx@gmail.com";
"password"="yyy";
}
Invoke-WebRequest -Uri http://foobar.com/endpoint -Method POST -Body $params
Run Code Online (Sandbox Code Playgroud)
这将发送帖子作为正文.但是 - 如果你想将它作为Json发布,你可能想要明确.要将其作为JSON发布,您可以指定ContentType并使用使用将主体转换为Json
Invoke-WebRequest -Uri http://foobar.com/endpoint -Method POST -Body ($params|ConvertTo-Json) -ContentType "application/json"
Run Code Online (Sandbox Code Playgroud)
额外:您还可以使用Invoke-RestMethod处理JSON和REST apis(这将为您节省一些额外的行以进行反序列化)
Fro*_* F. 43
使用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"
Run Code Online (Sandbox Code Playgroud)
如果您使用Powershell 3,我知道存在一些问题Invoke-RestMethod,但您应该可以使用它Invoke-WebRequest作为替代品:
$response = Invoke-WebRequest -Uri "http://somesite.com/oneendpoint" -Method Post -Body $JSON -ContentType "application/json"
Run Code Online (Sandbox Code Playgroud)
如果您不想每次都编写自己的JSON,可以使用哈希表并在发布之前使用PowerShell将其转换为JSON.防爆.
$JSON = @{
"@type" = "login"
"username" = "xxx@gmail.com"
"password" = "yyy"
} | ConvertTo-Json
Run Code Online (Sandbox Code Playgroud)
@Frode F.给出了正确的答案。
顺便说一下,Invoke-WebRequest还会打印出 the200 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
Run Code Online (Sandbox Code Playgroud)
然后您可以| ConvertTo-HTML在请求末尾附加一个以提高可读性
| 归档时间: |
|
| 查看次数: |
92298 次 |
| 最近记录: |