在PowerShell中调用Invoke-RestMethod
时,有没有办法在某处存储返回代码?
我的代码如下所示:
$url = "http://www.dictionaryapi.com/api/v1/references/collegiate/xml/Adventure?key=MyKeyGoesHere"
$XMLReturned = Invoke-RestMethod -Uri $url -Method Get;
我在$XMLReturned
变量中没有看到返回码为200的任何地方。我在哪里可以找到返回码?
答案 0 :(得分:20)
您有几个选择。找到选项1 here。它从异常中找到的结果中提取响应代码。
try {
Invoke-RestMethod ... your parameters here ...
} catch {
# Dig into the exception to get the Response details.
# Note that value__ is not a typo.
Write-Host "StatusCode:" $_.Exception.Response.StatusCode.value__
Write-Host "StatusDescription:" $_.Exception.Response.StatusDescription
}
另一个选择是使用找到here的旧invoke-webrequest cmdlet。
从那里复制的代码是:
$resp = try { Invoke-WebRequest ... } catch { $_.Exception.Response }
这是你可以尝试的两种方法。
答案 1 :(得分:6)
最简单的答案是:不能。
您应该改用Invoke-WebRequest
。
两者非常相似,主要区别在于:
Invoke-RestMethod
仅返回响应正文,可以方便地对其进行预先设置Invoke-WebRequest
返回完整响应,包括响应标头和状态代码,但不解析响应正文。PS> $response = Invoke-WebRequest -Uri $url -Method Get
PS> $response.StatusCode
200
PS> $response.Content
(…xml as string…)
答案 2 :(得分:1)
Invoke-WebRequest 可以解决您的问题
$response = Invoke-WebRequest -Uri $url -Method Get
if ($response.StatusCode -lt 300){
Write-Host $response
}
如果您愿意,请尝试接听电话
try {
$response = Invoke-WebRequest -Uri $url -Method Get
if ($response.StatusCode -lt 300){
Write-Host $response
}
else {
Write-Host $response.StatusCode
Write-Host $response.StatusDescription
}
}
catch {
Write-Host $_.Exception.Response.StatusDescription
}