我使用HttpWebRequest
从网页请求信息,但有时网站会重定向我,直到我到达正确的页面,这完全没问题,但是当我使用内容字符串下面的代码时(string content
)应该包含结束页面内容(重定向后),实际上包含重定向页面"重定向"。
基本上我需要在获得响应之前等待所有重定向完成以下请求。我该怎么做?
HttpWebRequest http = HttpWebRequest.Create(loginUrl) as HttpWebRequest;
http.AllowAutoRedirect = true;
// Wait for redirections to be completed before getting response
....
using (var response = http.GetResponse() as HttpWebResponse)
{
if (response.StatusCode == HttpStatusCode.OK)
{
using (var reader = new StreamReader(response.GetResponseStream()))
{
string content = reader.ReadToEnd();
if (content.Length > 0)
{
}
}
}
}
修改
在检查重定向页面后,我可以告诉重定向是通过Javascript执行的,我将抛弃HttpWebRequest重定向逻辑。建议考虑到这一点,或者我应该尝试另一件事,也许是这些程序的另一个.Net包装器?
答案 0 :(得分:1)
当您拥有"自动重定向" HttpWebRequest会查找重定向状态代码。启用。在这种情况下,重定向是通过javascript执行的,状态代码是200 OK,所以你需要额外的逻辑来解释这一点。
这里有几个选项,更简单的方法是解析响应HTML并找到脚本将重定向到的位置的URL。如果脚本使用来自cookie等的信息来构建URL,您可能需要解释该响应上的javascript以遵循重定向。