当前位置:编程学习 > C#/ASP.NET >>

真心求助,winform中的HttpWebRequest中cookies设置问题,POST发包总是没有COOKIES.求大神解答!回答都有热心分,在线等

先看一段代码
 Encoding myEncoding = Encoding.GetEncoding("gb2312");
            string PARAM = "ppui_regtime=1312212&suggestIndex=&suggestType=0&charset=GB2312&"
                + "index=0&u=http%3A%2F%2Fwenku.baidu.com%2Fstatic%2Fcommon%2Fhtml%2Freg%2Fverification.html"
                + "&staticpage=http%3A%2F%2Fwenku.baidu.com%2Fstat
                + "&callback=parent.bdPass.api.reg._postCallback&email=""&isagree=on";
            string url = "https://passport.baidu.com";
            string indata = PARAM;
            string outdata = "";
            CookieContainer myCookieContainer = new CookieContainer();
            //新建一个CookieContainer来存放Cookie集合
            HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
            //新建一个HttpWebRequest
            myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
            myHttpWebRequest.ContentLength = indata.Length;
            myHttpWebRequest.Method = "POST";
            myHttpWebRequest.KeepAlive = false;
            myHttpWebRequest.ProtocolVersion = HttpVersion.Version10;
            myHttpWebRequest.CookieContainer = myCookieContainer;
            //设置HttpWebRequest的CookieContainer为刚才建立的那个myCookieContainer
            Stream myRequestStream = myHttpWebRequest.GetRequestStream();//此为开始发头
            StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312"));
            myStreamWriter.Write(indata);
            //把数据写入HttpWebRequest的Request流
            myStreamWriter.Close();
            myRequestStream.Close();
            //关闭打开对象
            
            HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();//发包
            //新建一个HttpWebResponse
            myHttpWebResponse.Cookies = myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);
            //获取一个包含url的Cookie集合的CookieCollection
            Stream myResponseStream = myHttpWebResponse.GetResponseStream();
            StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("gb2312"));
            outdata = myStreamReader.ReadToEnd();
            //把数据从HttpWebResponse的Response流中读出
            myStreamReader.Close();
            myResponseStream.Close();
            MessageBox.Show(outdata);
 



不懂的是COOKIES的问题 

这段代码 开始的时候 定义一个COOKIES的容器 CookieContainer myCookieContainer = new CookieContainer(); 这时候有COOKIES么?  
本菜理解没有呀。myHttpWebRequest.CookieContainer = myCookieContainer; 那这句 空COO为啥还要给Request呢 ?

我想Request的时候带上COOKIES啊  百思不得其解  
myHttpWebResponse.Cookies = myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);
还有这里返回的是服务器的COOKIES?

抓包这个程序是没有COOKIES的 req没有 res有  

我就是想在发包接到Response之前 发送本机的COOKIES 请问怎么修改代码 

有好心人帮我更好的注释这段代码么?   


多谢各位。在线等。
  --------------------编程问答--------------------
引用楼主  的回复:
这段代码 开始的时候 定义一个COOKIES的容器 CookieContainer myCookieContainer = new CookieContainer(); 这时候有COOKIES么?   
本菜理解没有呀。myHttpWebRequest.CookieContainer = myCookieContainer; 那这句 空COO为啥还要给Request呢 ?

只有访问了网站,也就是 GetResponse 中才能带回来cookie值。然后你可以把cookie值用于随后的 GetReqeust 请求中。

建议你仔细搜索一下 CookieContainer 的文章,这种问题自己解决最好。


现在很多程序员只会做“增删改查”的小OA程序。培养了自学阅读能力,可以做稍微高级一点的东西。 --------------------编程问答--------------------
引用楼主  的回复:
我就是想在发包接到Response之前 发送本机的COOKIES 请问怎么修改代码  


不可能先发送,但是你可以 Add(Cookie)。 --------------------编程问答--------------------
引用 2 楼  的回复:
引用楼主  的回复:
我就是想在发包接到Response之前 发送本机的COOKIES 请问怎么修改代码


不可能先发送,但是你可以 Add(Cookie)。

我用E语言写的一句话
调试输出 (到文本 (网页_访问 (“https://passport.baidu.com”, 1, , , 到字节集 (“ppui_regtime=1658816&suggestIndex=&suggestType=0&charset=GB2312&index=0&u=http%3A%2F%2Fwenku.baidu.com%2Fstatic%2Fcommon%2Fhtml%2Freg%2Fverification.html&staticpage=http%3A%2F%2Fwenku.baidu.com%2Fstatic%2Fcommon%2Fhtml%2Freg%2Fv2Jump.html®isterType=1&retu=http%3A%2F。。。后省略

我抓包只有一个POST 并且他的请求中带有COOKIES 请问  我只能GET下获得COOKIES 然后才能POST发包带有COOKIES么?
--------------------编程问答-------------------- 大神都休息了么? --------------------编程问答-------------------- 没人在么? --------------------编程问答-------------------- 我也遇到过类似的问题,
HttpWebRequest req=..........;
request_Login_115.Headers.Set(HttpRequestHeader.Cookie, CookieStr);
然后GetResponse()
抓包显示发送出去的请求没有Cookie标头。。。
同求。 --------------------编程问答-------------------- 这么久 都没人回答呀。 --------------------编程问答-------------------- //新建一个HttpWebResponse
myHttpWebResponse.Cookies = myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);
这句删掉看下
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,