【问题标题】:C# WebClient: Illegal Character in linkC# WebClient:链接中的非法字符
【发布时间】:2016-12-18 14:22:00
【问题描述】:

[解决方案]

我将 url 传递给 path 参数,并将路径传递给 url 参数。傻逼

[/解决方案]

我想制作一个更新程序,所以我必须从 Dropbox 下载一些文件 (.zip)。我有一个 .dll 中的下载 Methode,这是我自己写的,不应该只是想提一下的问题,现在当我使用来自字符串数组的链接调用这个 Methode 时。我明白了:

现在错误消息是德语,所以我会为您翻译:“发出 WebClient 请求时出现异常”。

我可以提供有关错误的更多信息,确切的错误是:

“下载字符串中有非法字符”

我尝试了另一个来自 Dropbox 的链接。

作品: https://www.dropbox.com/s/n82iqqf1vmfrfhr/Base.zip?dl=1

不起作用: https://www.dropbox.com/s/dd146f85trixobv/update1.zip?dl=1

两个链接来自同一个数组...

效果很好。所以我不知道非法字符是什么......

字符串数组是使用 File.ReadAllLines() 生成的,它读取一个包含 3 个链接的文件。

文件看起来完全一样:

https://www.dropbox.com/s/n82iqqf1vmfrfhr/Base.zip?dl=1
https://www.dropbox.com/s/dd146f85trixobv/update1.zip?dl=1
https://www.dropbox.com/s/xcmat8x8qlijxsn/update2.zip?dl=1

【问题讨论】:

  • 也许链接中有\r\n 或类似的东西?你能检查一下吗?
  • 链接是:https://www.dropbox.com/s/dd146f85trixobv/update1.zip?dl=1 所以链接中有/s/d ,但这并不能解释错误,因为 https://www.dropbox.com/s/n82iqqf1vmfrfhr/Base.zip?dl=1 工作得很好并且里面有同样的东西。
  • /s/d 没有问题 :) 但是您说您正在从文件中读取链接。可能在源文件的相应行中存在非法字符。
  • 文件看起来与我在问题部分中显示的完全一样。除了链接本身,其中没有任何内容。据我所见,它们被正确读取,因为在第一张图片中,当您查看第一个蓝色括号时,链接与文件中的链接完全相同,因此读取正确。
  • 会不会也是路径不对?

标签: c# winforms web hyperlink download


【解决方案1】:

正如我在图片 1 中看到的,您设置了路径而不是链接! 你的代码是:

webClient.DownloadFile(path,link);

但正确的代码是:

webClient.DownloadFile(link,path);

所以使用下面的代码:

WebClient wb = new WebClient();
var link = new Uri("https://www.dropbox.com/s/dd146f85trixobv/update1.zip?dl=1")
wb.DownloadFile(link, @path);

【讨论】:

  • 你说得对,我不敢相信我没有找到那个。 :D 但这很有意义,因为我以不同的方法从另一个链接下载并且我有正确的方法......
猜你喜欢
  • 2015-05-03
  • 1970-01-01
  • 2014-04-10
  • 1970-01-01
  • 1970-01-01
  • 2019-05-12
  • 1970-01-01
  • 2018-02-28
  • 1970-01-01
相关资源
最近更新 更多