Как сделать запрос POST с использованием Powershell, если у тела есть параметр @type
Я хочу сделать запрос POST в PowerShell. Ниже перечислены детали тела в Postman.
{"@type":"login",
"username":"[email protected]",
"password":"yyy"
}
Как передать это в PowerShell?
Ответы
Ответ 1
Вы должны быть в состоянии сделать следующее:
$params = @{"@type"="login";
"username"="[email protected]";
"password"="yyy";
}
Invoke-WebRequest -Uri http://foobar.com/endpoint -Method POST -Body $params
Это будет опубликовать тело, как вы указали.
Ответ 2
Используйте Invoke-RestMethod
для использования REST-API. Сохраните JSON в строке и используйте это как тело, например:
$JSON = @'
{"@type":"login",
"username":"[email protected]",
"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" = "[email protected]"
"password" = "yyy"
} | ConvertTo-Json