简体   繁体   English

C#如何通过HttpWebRequest调用具有相同cookie的多个POST,GET请求?

[英]C# How can I call multiple POST, GET requests with same cookie via HttpWebRequest?

my question is, how can I call multiple requests via HttpWebRequest with same authenticate cookie in C#? 我的问题是,如何在C#中通过具有相同身份验证cookie的HttpWebRequest调用多个请求? I tried a lot of times but for now I dunno how to do it :/ 我尝试了很多次,但现在我不知道该怎么做:/

My code is below: 我的代码如下:

        var postData = "method=loginFormAccount&args[0][email]=###&args[0][pass]=###&args[0][cache]=37317&args[]=1";
        var data = Encoding.ASCII.GetBytes(postData);

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("###");
        request.CookieContainer = new CookieContainer();
        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        request.AllowAutoRedirect = true;            

        using (var stream = request.GetRequestStream())
        {
            stream.Write(data, 0, data.Length);
        }

        HttpWebResponse response = (HttpWebResponse)request.GetResponse();

        var cookies = new CookieContainer();
        cookies.Add(response.Cookies);

        System.IO.File.WriteAllText(@desktop + "\\post.html", new StreamReader(response.GetResponseStream()).ReadToEnd());

        // =================================== END LOGIN ==================================== \\

        System.IO.File.WriteAllText(@desktop + "\\cookie.html","");

        foreach (Cookie cook in response.Cookies)
        {
            using (System.IO.StreamWriter file = new System.IO.StreamWriter(@desktop + "\\cookie.html", true))
            {
                file.WriteLine(cook.ToString());
            }
            // Show the string representation of the cookie.                
        }

        HttpWebRequest requestNext = (HttpWebRequest)WebRequest.Create("####");
        requestNext.CookieContainer = cookies;
        requestNext.Method = "GET";

        HttpWebResponse responseNext = (HttpWebResponse)requestNext.GetResponse();

        //var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();

        System.IO.File.WriteAllText(@desktop + "\\get.html", new StreamReader(responseNext.GetResponseStream()).ReadToEnd());

My main problem is that, cookie which I'm getting is the cookie BEFORE authenticate so I must to do something to get cookie AFTER authenticate. 我的主要问题是,要获取的cookie是在身份验证之前的cookie,因此我必须做一些事情才能在身份验证之后获取cookie。

Try this : 尝试这个 :

HttpWebRequest requestNext = (HttpWebRequest)WebRequest.Create("####");
requestNext.CookieContainer.Add(cookies);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM