Web客户端下载文件出错:对象引用未设置为对象的实例

本文关键字:设置 对象 实例 对象引用 下载 客户端 文件 出错 Web | 更新日期: 2023-09-27 18:32:01

WebClient ws = new WebClient();
ws.Credentials = new System.Net.NetworkCredential(username, password, domain);
 ws.DownloadFile("https://xxxx.xxxx.com/xxxx.xml", @"C:'Windows'TEMP'Downloaded.xml");

我收到错误"对象引用未设置为对象的实例"。有人知道为什么吗?

如果我将"https://xxxx.xxxx.com/xxxx.xml"复制到浏览器,它可以下载并保存到"C:''Windows''TEMP''Downloaded.xml",但我的程序不能,只能抛出错误。

以前我使用相同的代码成功下载了该文件,但那是另一个带有"http"的网站。不确定这是否是问题的原因。

Web客户端下载文件出错:对象引用未设置为对象的实例

我在使用 WebClient 类时遇到了同样的问题。我所做的是构建一个 URI 而不是像这样的字符串路径(我在这里没有这样做,但您也可以将用户名和密码添加到 UriBuilder):

var uriBuild = new UriBuilder { Host host, Path = downloadPath };
client.DownloadFileAsync(uriBuild.Uri, localPath);

主机和下载路径是分开的,例如:

string host = "ftp.sunet.se"
string downloadPath = "/pub/unix/databases/relational/mysql/Downloads/MySQL-5.5/mysql-5.5.22-win32.msi"

让我知道这是否也适合您!干杯:)

使用

uri 而不是使用原始网址

Uri URL = urlAddress.StartsWith("https://", StringComparison.OrdinalIgnoreCase) ? new Uri(urlAddress) : new Uri("https://" + urlAddress);
await myWebClient.DownloadFileTaskAsync(URL, location);