Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can';t下载维基百科文章_C# - Fatal编程技术网

C# Can';t下载维基百科文章

C# Can';t下载维基百科文章,c#,C#,我有一个基于C#控制台的应用程序(Windows10,VS2015),我想从两篇维基百科文章中下载原始文本。维基百科的URL包含UMLAUT,其中一个给我带来了一些麻烦。以下是仅用于获取web响应的代码: WebRequest.Create("https://en.wikipedia.org/wiki/Albrecht_Dürer").GetResponse(); WebRequest.Create("https://en.wikipedia.org/wiki/Dürer's_Rhinocero

我有一个基于C#控制台的应用程序(Windows10,VS2015),我想从两篇维基百科文章中下载原始文本。维基百科的URL包含UMLAUT,其中一个给我带来了一些麻烦。以下是仅用于获取web响应的代码:

WebRequest.Create("https://en.wikipedia.org/wiki/Albrecht_Dürer").GetResponse();
WebRequest.Create("https://en.wikipedia.org/wiki/Dürer's_Rhinoceros").GetResponse();
WebRequest.Create("https://en.wikipedia.org/wiki/Durer's_Rhinoceros").GetResponse(); 
第三个响应用于测试目的,与第二个响应相同,只是我将'u'替换为'u'。因此,第一个响应工作正常,第二个响应失败,第三个响应工作正常。起初我以为这只是乌姆劳特,但如果是这样的话,那么第一反应就行不通了。我在第二次响应中收到的错误是:

System.Net.WebException: Too many automatic redirections were attempted.

此外,当我在我的WindowsPhone8.1Silverlight项目上测试它们时,所有这三个响应都有效。有人知道发生了什么吗?

您应该使用
System.Web.HttpUtility.UrlEncode()
对url进行编码。您还可以尝试使用
System.Uri.EscapeDataString()


我猜单引号会带来问题。使用上述方法,应将单引号转换为
%27

您应使用
System.Web.HttpUtility.UrlEncode()
对url进行编码。您还可以尝试使用
System.Uri.EscapeDataString()


我猜单引号会带来问题。使用上述方法,单引号应转换为
%27

,因此我尝试了
Uri.EscapeDataString()
&
Uri.EscapeUriString()
,但没有成功。以下三种变体不起作用
http://en.wikipedia.org/wiki/D27s_犀牛
http://en.wikipedia.org/wiki/D%C3%BCrer's_Rhinoceros
http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FD%C3%BCrer%27s_Rhinoceros
。我也找不到System.Web.HttpUtility命名空间。@kernanb per,将
System.Web.dll
引用添加到您的项目中,然后您应该能够使用
System.Web
命名空间中的
HttpUtility
类。我已经可以使用
System.Web
命名空间了。没有
HttpUtility
类。有一个
Http
类,但我没有看到
UrlEncode
方法。所以我尝试了
Uri.EscapeDataString()
&
Uri.EscapeUriString()
,但没有成功。以下三种变体不起作用
http://en.wikipedia.org/wiki/D27s_犀牛
http://en.wikipedia.org/wiki/D%C3%BCrer's_Rhinoceros
http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FD%C3%BCrer%27s_Rhinoceros
。我也找不到System.Web.HttpUtility命名空间。@kernanb per,将
System.Web.dll
引用添加到您的项目中,然后您应该能够使用
System.Web
命名空间中的
HttpUtility
类。我已经可以使用
System.Web
命名空间了。没有
HttpUtility
类。有一个
Http
类,但我没有看到
UrlEncode
方法。我还发现后缀
the_Farm_(Miró)
有效,但
Mirós Chicago
失败。这似乎表明,如果同时有一个变音字符和一个倒逗号,就会出现失败。我还发现后缀
the_Farm_(Miró)
起作用,但
Mirós Chicago
失败。这似乎表明,如果同时存在一个变音字符和一个倒逗号,则会发生故障。