2016-07-27 2 views
8

Есть ли способ сохранить код возврата где-нибудь при вызове Invoke-RestMethod в 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. Где я могу найти, что код возврата?

ответ

9

У вас есть несколько вариантов. Вариант 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 
} 

Другой вариант заключается в использовании старого Invoke-WebRequest Командлет найден here.

Код скопирован оттуда:

$resp = try { Invoke-WebRequest ... } catch { $_.Exception.Response } 

Это 2 способа сделать это, которые вы можете попробовать.

+4

Первый метод требует исключения, поэтому он не будет работать для сценария айзера для получения ответа 200. 'Invoke-WebRequest' - это путь; это не «старый»; и это не требует 'try' /' catch' или исключения. Возможно, вы захотите немного отредактировать ответ, чтобы показать это, и объяснить, что 'Invoke-RestMethod' просто преобразует содержимое из JSON в объект автоматически, что может быть достигнуто с помощью' iwr', передавая содержимое в 'ConvertFrom-Json' , – briantist

+0

Спасибо, сделаю это коротко. Я просто имел в виду старый, поскольку в invoke-restmethod предполагается заменить его в какой-то момент, хороший призыв к не нужному улову тоже! –

+0

'Invoke-RestMethod' и' Invoke-WebRequest' были добавлены одновременно; ни замена для другого (если что-то 'iwr' заменяет' irm', поскольку оно более универсально). 'irm' является ярлыком для того, что вы могли бы сделать с помощью' iwr' и 'ConvertFrom-Json', чтобы просто сделать вещи немного быстрее. Я повышу ваш ответ, если вы его улучшите. – briantist

Смежные вопросы