我正在尝试在URL中下载带冒号':'的文件,并在URL字符串中获得该字符的异常。例如:http://www.somesite.com/url:1/将在WebClient中创建一个例外。使用URI下载文件的另一种方法是什么?如何修复此异常?
以下是一些示例代码:
WebClient wc = new WebClient();
wc.DownloadFile("http://www.somesite.com/url:1/", somePath);
答案 0 :(得分:4)
您可以尝试对冒号(%3A
)进行URL编码。
我总是使用this site对网址进行编码或解码。
你的例子就是这样:
WebClient wc = new WebClient();
wc.DownloadFile("http://www.somesite.com/url%3A1/", somePath);
答案 1 :(得分:2)
网址的路径部分中不能包含许多特殊字符。您将必须对该部分进行编码并将其与服务器地址连接。您可以使用HttpUtility.UrlEncode
执行此操作string url = "http://www.somesite.com/" + HttpUtility.UrlEncode("url:1/");
答案 2 :(得分:1)
您需要使用HttpUtility.UrlEncode
对URI进行编码。见this example。如果它是静态的而不仅仅是使用固定字符翻译(%3A
)。
答案 3 :(得分:1)
WebClient
对此没有抱怨:
using(var client = new WebClient())
{
try
{
client.DownloadFile(
"http://stackoverflow.com/users/541404/fake:1",
@"j:\MyPath\541404.html");
}
catch (Exception ex)
{
while (ex != null)
{
Console.WriteLine(ex.Message);
ex = ex.InnerException;
}
}
}
工作正常。所以;我想你需要再次查看Exception
(和任何InnerException
),看看问题实际是什么。
答案 4 :(得分:0)
我不是这方面的专家,但是所有浏览器都用“%”+ ASCII代码(十六进制)代替非法字符,所以也许你可以试试"%3A"
代替“:”。喜欢:"http://www.somesite.com/url:1/"