为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕神8447489 2021-07-05 17:56:11
我正在编写一个在网站上运行的脚本,将一个项目添加到购物车,然后结帐。我设法添加到购物车,但是当我想结帐时,就像购物车中没有任何东西一样。如何使用同一会话添加到购物车/结帐?这是我的代码:        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 主页的源代码非常感谢您的回答
查看完整描述

1 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

您需要存储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行尾


查看完整回答
反对 回复 2021-07-10
  • 1 回答
  • 0 关注
  • 170 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信