我正在尝试加载从 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,我有什么遗漏/不应该做的吗?