我正在尝试使用PowerShell中的以下行创建PATCH请求,但它返回403:
Try{
$Body = @{
'api_key' = 'myapikey'
'item[status]' = 'unavailable'
} | ConvertTo-Json
$response = Invoke-WebRequest -Method PATCH -Uri "https://api.example.com/store/apikey.json" -Body $Body -ContentType "application/json"
$response.StatusCode
}
Catch [System.Net.WebException]{
$code = [int]$_.Exception.Response.StatusCode
}
Fiddler返回403并带有以下消息:“{”error“:”参数项是必需的“}”。此外,Fiddler中的查询字符串为空。但是,当所有内容都硬编码到Uri中时,会成功提出请求:
$statusUpdate = Invoke-WebRequest -Method PATCH -Uri "https://api.example.com/store/apikey.json?api_key=myapikey&item[status]=unavailable" -ContentType "application/json"
答案 0 :(得分:1)
如果那是你实际用来命中API的代码,你的问题似乎只是由于将你的json主体管道输出到主机,因此向API发送一个空的$ Body,所以你应该将它编辑为这样做:
try
{
$Body = @{
'api_key' = 'myapikey'
'item[status]' = 'unavailable'
} | ConvertTo-Json
$response = Invoke-WebRequest -Method PATCH -Uri "https://api.example.com/store/apikey.json" -Body $Body -ContentType "application/json"
$response.StatusCode
}
catch [System.Net.WebException]
{
$code = [int]$_.Exception.Response.StatusCode
}