如何使用非 ascii 字符处理 HttpWebRequest 重定向

Posted

技术标签:

【中文标题】如何使用非 ascii 字符处理 HttpWebRequest 重定向【英文标题】:How to handle HttpWebRequest redirect with non-ascii characters 【发布时间】:2011-10-05 00:38:21 【问题描述】:

我正在编写一个应用程序,它使用 HttpWebRequest 类获取一组 URL 的服务器响应代码。我今天遇到了一个给我带来问题的 URL。

有问题的网址是http://blip.tv/file/5312019

当我在 Internet Explorer 中加载此 URL 时,它会正确地将我重定向到 http://blip.tv/sorawut/money-talk-เม่า-นักเขียนการ์ตูนหุ้น-5329374。但是在使用 HttpWebRequest 类时,它会出现重定向问题。

如果我将 AllowAutoRedirect 设置为 false 并检查 response.Headers 集合中的 Location 元标记,它会显示时髦的 URL http://blip。电视/sorawut/money-talk-à¹à¸¡à¹à¸²-à¸à¸±à¸à¹à¸à¸µà¸¢à¸à¸à¸²à¸£à¹à¸à¸¹à¸à¸«à¸¸ à¹à¸-5329374。当请求尝试重定向到此 URL 时,它会导致无限重定向循环并最终抛出 WebException 说“尝试了太多自动重定向”。

我尝试将这个时髦的 URL 粘贴到 Internet Explorer 中,它会自动将其更改为正确的重定向 URL 并成功加载页面。

那么,我需要做什么才能让我的 HttpWebRequest 为这个特定的 URL 返回状态码 200? (因为它是成功重定向后有效且有效的 URL)

【问题讨论】:

【参考方案1】:

在你的配置文件中试试这个

<configuration>
   <uri>
     <idn enabled="All" />
     <iriParsing enabled="true" />
   </uri>
</configuration>

在此处查看国际资源标识符支持部分 -> http://msdn.microsoft.com/en-us/library/system.uri.aspx

【讨论】:

以上是关于如何使用非 ascii 字符处理 HttpWebRequest 重定向的主要内容,如果未能解决你的问题,请参考以下文章

Outlook导入联系人是否不支持非ASCII字符?

如何在批处理脚本的文件内容中找到非 ASCII?

如何使用 echo 编写非 ASCII 字符?

如何使用正则表达式和 Notepad++ 删除所有非 ASCII 字符?

Django:非ASCII字符

如何从字符串中删除非 ASCII 字符?