0

我正在尝试加载从 RSS 提要收到的页面,但收到以下 WebException:

Cannot handle redirect from HTTP/HTTPS protocols to other dissimilar ones.

有一个内部例外:

Invalid URI: The hostname could not be parsed.

这是我正在使用的代码:

System.Net.HttpWebRequest req = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(url);
string source = String.Empty;
Uri responseURI;
try
{
    req.UserAgent=@"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:31.0) Gecko/20100101 Firefox/31.0";
    req.Headers.Add("Accept-Language", "en-us,en;q=0.5");
    req.AllowAutoRedirect = true;
    using (System.Net.WebResponse webResponse = req.GetResponse())
    {
        using (HttpWebResponse httpWebResponse = webResponse as HttpWebResponse)
        {
            responseURI = httpWebResponse.ResponseUri;
            StreamReader reader;
            if (httpWebResponse.ContentEncoding.ToLower().Contains("gzip"))
            {
                reader = new StreamReader(new GZipStream(httpWebResponse.GetResponseStream(), CompressionMode.Decompress));
            }
            else if (httpWebResponse.ContentEncoding.ToLower().Contains("deflate"))
            {
                reader = new StreamReader(new DeflateStream(httpWebResponse.GetResponseStream(), CompressionMode.Decompress));
            }
            else
            {
                reader = new StreamReader(httpWebResponse.GetResponseStream());
            }
            source = reader.ReadToEnd();
            reader.Close();
        }
    }
}
catch (WebException we)
{
        Console.WriteLine(url + "\n--\n" + we.Message);
        return null;
}

我不确定我是否做错了什么,或者我是否需要做一些额外的事情。任何帮助将不胜感激!如果您需要更多信息,请告诉我。

############ 更新

因此,在遵循 Jim Mischel 的建议后,我将其范围缩小到UriFormatException声称Invalid URI: The hostname could not be parsed.

这是最后一个“位置”标头中的 URL:http:////www-nc.nytimes.com/

我想我可以明白它为什么会失败,但我不确定为什么它会给我带来麻烦,但是当我使用原始 url 时,它在我的浏览器中处理得很好。为了处理这个奇怪的 URL,我有什么遗漏/不应该做的吗?

4

0 回答 0