【问题标题】:Test WebClient API call测试 WebClient API 调用
【发布时间】:2016-05-17 14:32:05
【问题描述】:

我有以下 PowerShell 脚本,可以进行 API Rest GET 调用。

$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 调用?

由于 Windows 2003 主机,它必须适用于 PowerShell 2.0。如果没有数据,API 会给出错误 404 代码。

【问题讨论】:

    标签: powershell powershell-2.0


    【解决方案1】:

    您需要使用 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    
    }
    

    【讨论】:

    • 感谢您的帮助。我收到以下错误 - 无法找到类型 [Webexception]:确保已加载包含此类型的程序集。我将主机名更改为不存在以进行测试的主机名。任何想法
    • 谢谢,在另一个 stackoverflow 问题中也找到了 Net.webexception。工作完美。你知道 [net.webexception] 是做什么的吗?只是为了我的学习。谢谢
    • 它定义了该类型的异常,它并没有真正任何事情。建议您找到 .NET 中错误处理的介绍,其中将介绍异常是什么、何时抛出以及如何处理它们。 WebException is explained here
    猜你喜欢
    • 2017-07-09
    • 2021-01-28
    • 1970-01-01
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多