c# - HttpWebRequest 自动发送需要的HttpRequests

标签 c# httpwebrequest

我正在使用 HTTPWebRequest 模拟 POST 请求以登录网站。但是当使用 firebug 跟踪浏览器在登录期间正在做什么时,我发现它在登录后发出了一些 GetRequests。

所以我正在寻找的是如何让我的 POST 请求自动执行 GET 请求?

有人告诉我使用 JS 函数,但我对此一无所知。

private static async Task<byte[]> LoginAsync(string username, string password)
{
    var postData = new NameValueCollection();

    var uri = new Uri(string.Format("http://{0}/", ServerName));

    postData.Add("name", username);
    postData.Add("password", password);
    postData.Add("login", ParseLoginId(await GetPage("login.php")));

    return await HttpHandler.UploadValuesTaskAsync(uri, postData);
}

我的 HTTP 处理程序

private CookieContainer _mContainer = new CookieContainer();

protected override WebRequest GetWebRequest(Uri address)
{
    var request = base.GetWebRequest(address);
    if (request is HttpWebRequest)
    {
        (request as HttpWebRequest).CookieContainer = _mContainer;
    }
    return request;
}

public void ClearCookies()
{
    _mContainer = new CookieContainer();
}

我正在使用上面的代码发送 POST 请求,但问题是它并没有完全模拟浏览器所做的...所以它不会在登录后自动发送所需的 GET 请求。

最佳答案

前面的 GET 请求可能是位置 header 重定向。

为什么不使用 System.Net.WebClient 类。 C# Console/Server access to web site 该链接向您展示了如何扩展 WebClient 以保留 cookie 信息。

关于c# - HttpWebRequest 自动发送需要的HttpRequests,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13037244/

相关文章:

c# - 如何用C#让图像平滑移动

c# - 使用 HttpWebRequest 的网络身份验证和网站身份验证

http - HTTP Response中的Content-MD5字段是否通用?

c# - 如何更改我的 treeView 图标而不是 +,- 就像 c#.net win 窗体中的 Windows 资源管理器 TreeView

c# - 在测试期间应该如何处理过时的索引?

c# - CommonServiceLocator 的这条评论中的环境一词是什么意思?

c# - 服务器不读取没有 MIME 类型的请求

c#-4.0 - C#HttpWebRequest忽略HTTP 500错误

c# - POST 和 GET 库问题

c# - RefreshMode.ClientWins 具有多个用户,会发生什么?