多个帖子请求同一个会话 c#

我正在编写一个在网站上运行的脚本,将一个项目添加到购物车,然后结帐。我设法添加到购物车,但是当我想结帐时,就像购物车中没有任何东西一样。如何使用同一会话添加到购物车/结帐?


这是我的代码:


        var request = (HttpWebRequest)WebRequest.Create(url_add_to_cart);


        var postData = "utf8=✓";

        postData += "style=" + data_style_id;

        postData += "size=" + size;

        postData += "commit=add to basket";

        var data = Encoding.ASCII.GetBytes(postData);


        request.Method = "POST";

        request.ContentType = "application/x-www-form-urlencoded";

        request.ContentLength = data.Length;

        using (var stream = request.GetRequestStream())

        {

            stream.Write(data, 0, data.Length);

        }

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

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


        //checkout----------------

        var url_checkout = link_general + "/checkout.json";

        var request2 = (HttpWebRequest)WebRequest.Create(url_checkout);


        var postData2 = "utf8=✓";

        postData2 += "order[billing_name]=toto";

        postData2 += "order[email]=toto@gmail.com";


        var data2 = Encoding.ASCII.GetBytes(postData2);


        request2.Method = "POST";

        request2.ContentType = "application/x-www-form-urlencoded";

        request2.ContentLength = data2.Length;


        using (var stream2 = request2.GetRequestStream())

        {

            stream2.Write(data2, 0, data2.Length);

        }


        var response2 = (HttpWebResponse)request2.GetResponse();


        var responseString2 = new StreamReader(response2.GetResponseStream()).ReadToEnd();



        Console.WriteLine(responseString2);

当我执行结帐请求时,它不起作用并获取网站 html 主页的源代码


非常感谢您的回答


慕神8447489
浏览 171回答 1
1回答

摇曳的蔷薇

您需要存储request.CookieContainer在局部变量中,并且每次需要发送新请求时再次设置它private CookieContainer cookieContainer;private void SendRequest(){    HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);    request.ContentType = "application/x-www-form-urlencoded";    request.Method = "POST";    if (this.cookieContainer != null)                        request.CookieContainer = this.cookieContainer;                    else                        request.CookieContainer = new CookieContainer();                    ...    ...    ...    this.cookieContainer = request.CookieContainer;}并添加&到postData行尾
打开App,查看更多内容
随时随地看视频慕课网APP