HttpWebRequest自动发送所需的HttpRequests

时间:2012-10-23 18:55:08

标签: 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);
}

MY HTTP HANDLER

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请求。

1 个答案:

答案 0 :(得分:0)

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

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