2016-05-17 2 views
0

У меня есть следующий сценарий PowerShell, который вызывает вызов API GET GET.Тест API WebClient для вызова

$FullURL = "http://test.net/config/server/$($env:COMPUTERNAME)?format=test" 
$API = New-Object System.Net.WebClient 
$APIData = $API.DownloadString($FullURL) 
Set-Content -Value $APIdata -Path $APIDataFile -Force 

Звонок зависит от локального имени хоста в URI. Он получает данные и экспортирует их в текстовый файл в качестве резервной копии. Проблема: хост API может быть недоступен или недоступен для хоста, что приведет к возникновению всех ошибок в скрипте (это небольшая часть скрипта, поскольку он добавляет данные в файл XML).

Как добавить логику к скрипту, чтобы сначала проверить вызов API, если успешно продолжить выполнение вызова API?

Он должен работать для PowerShell 2.0 из-за хостов Windows 2003. API дает код ошибки 404, если нет данных.

ответ

2

Вам нужно использовать блок try/catch. WebClient должен вызвать исключение, когда загрузка не будет успешной. Попробуйте что-то вроде:

$FullURL = "http://test.net/config/server/$($env:COMPUTERNAME)?format=test" 
try { 
    $API = New-Object System.Net.WebClient 
    $APIData = $API.DownloadString($FullURL) 
    Set-Content -Value $APIdata -Path $APIDataFile -Force 
} 
catch [Net.WebException] { 
    # Do whatever you want if an exception is raised  
} 
+0

Благодарим за помощь. Я получаю следующую ошибку. Невозможно найти тип [Webexception]: убедитесь, что загружена сборка, содержащая этот тип. Я изменил имя хоста на тот, который не существует для тестирования. Любые идеи –

+0

См. Редактирование, пропустил важный 'Net.' out – arco444

+0

Спасибо, нашел Net.webexception в другом вопросе stackoverflow. Работает отлично. Вы знаете, что делает [net.webexception]? просто для моего обучения. Спасибо –