【问题标题】:WebClient download - how to detech bad URLWebClient 下载 - 如何检测错误的 URL
【发布时间】:2012-02-27 20:24:55
【问题描述】:

我们最近开始在 Windows 7/64 工作站上使用 vb.net 2008 WebClient 将文件从网站下载到本地机器。

除了我们无法检测 URL 是否无效之外,它可以正常工作。它不会引发错误。如果我们使用异步,它会触发下载完成事件,但由于 URL 不正确,因此没有文件。

有没有办法检测不正确的 URL?

我还注意到事件没有给你 URL 或文件?好像应该?

谢谢

【问题讨论】:

    标签: .net vb.net url webclient


    【解决方案1】:

    不清楚您所说的无效网址是什么意思。这可能意味着两件事:

    1. 网址格式不正确
    2. 网址格式正确,但服务器没有响应 HTTP 2xx 或 3xx 状态代码

    就检测格式正确的 url 而言,您可以在尝试发送 HTTP 请求之前使用Uri.TryCreate 方法。就检测第二个条件而言,在您实际向给定 url 发送 HTTP 请求之前,您无法检测到它。如果服务器以不同于 2xx 或 3xx 的状态码(例如 404 或 500)响应,则会引发您可以捕获的异常。如果您使用方法的异步版本,则不会引发异常,但在完整回调中,您必须在尝试访问 Result 属性之前检查传递的 EventArgs 实例的 Error 属性是否不为空。

    【讨论】:

    • 我对第二个感兴趣。错误的 URL,即找不到文件。你如何得到回应。
    • @QuickBooksDev,有很多可能性。服务器发送 404 HTTP 状态代码 => 2 种可能性:1. 您正在使用异步 API - 在这种情况下,您测试在完整回调中传递的 EventArgs 的 Error 属性和 2. 您正在使用同步 API - 异常是抛出。第二种情况是服务器不发送 404 状态码,而只是发送带有错误页面的 200 状态码。在这种情况下,您必须基本解析返回的 HTML 以了解它是否包含错误消息。很难区分实际的成功案例。
    • 尝试 catch 不会在异步或同步中弹出。下载完成在e.error中没有任何内容
    • @QuickBooksDev,因此即使未找到页面,服务器也会发送状态代码 200。您必须解析返回的 HTML 以识别这种情况,因为没有任何东西可以让您在成功和错误条件之间消除歧义。如果服务器不遵守 HTTP 协议和 REST 标准,消费客户端将会受到影响。
    • 据我所知,没有返回任何内容。您能告诉我如何获取响应 HTML。我不确定你在说什么标准。它只是我们网站文件夹中的一个 exe 文件。
    猜你喜欢
    • 1970-01-01
    • 2017-01-11
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    • 2017-09-04
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    相关资源
    最近更新 更多