首页 新闻 会员 周边

webrequest cookie 的获取问题

0
悬赏园豆:50 [已解决问题] 解决于 2010-03-10 17:55

现在我要在自己的系统中登陆到 另一个站点的博客,  然后发表文章.
 
现在实现了 登陆,  发文章是根据httpwatch 获得的地址和cookie,再post 过去的,如果是直接用监视到的cookie(header项里的值)  是可以实现发帖的
  但这样 把一些内容就写死了, 如果有点变动,或者改个用户就不能用了,  我就先访问博客的主页, 获取cookie ,同样用httpwatch 可以看到有cookie项里有多个cookie ,但是通过下面的方法获取的就少几个,
            HttpWebRequest req1 = WebRequest.Create(url) as HttpWebRequest;
            CookieContainer mi =cookie;//通过登陆获取的
           
            req1.Method = "GET";
            WebResponse wp1 = req1.GetResponse();

            Stream st1 = wp1.GetResponseStream();
            StreamReader sr1 = new StreamReader(st1);
            string aa1 = sr1.ReadToEnd();
            CookieCollection cookieheader1 = req1.CookieContainer.GetCookies(req1.RequestUri);
  这样获取的cookieheader1  比监视到的要少几个 ,不知道是怎么回事, 

  我想如果这里的cookie 获取对了,替换写死的的cookie 就应该可以了

  弄了一天了,也搜索了不少, 还是没解决.

蓝蓝的天的主页 蓝蓝的天 | 初学一级 | 园豆:50
提问于:2010-03-01 17:43
< >
分享
最佳答案
0

CookieContainer cookies = new CookieContainer();

每次请求时设置req.CookieContainer = cookies;

这样登陆之后的Cookies会保存到CookieContainer里

在下一次请求时也设置req.CookieContainer = cookies;

会自动将登录返回的cookies放到这次请求的Cookies里面。

收获园豆:10
snryang | 初学一级 |园豆:24 | 2010-03-01 17:51
登陆后的cookie 获取到了, 但是再发表的时候还需要获取另外的cookie ,是在另一个url中获取的,也基本是这样, 但是获取的cookie 比监视到的要少
蓝蓝的天 | 园豆:50 (初学一级) | 2010-03-01 18:06
其他回答(4)
0

CookieCollection cookieheader1 = req1.CookieContainer.GetCookies(req1.RequestUri); 

这一句有问题吧?好像就是获取写入的的内容啊,应该从wp1对象下手啊,注意http协议的话你会发现webrespose在cookie不变的时候是没用cookies的,更改的时候可以通过Set-Cookie字段的到更改的cookie:

wp1.Headers["Set-Cookie"];

再自己与之前的cookie综合既可以得到~~~

http://www.cnblogs.com/lulu/archive/2009/11/07/1597971.html

这个对你应该有所帮助:)

收获园豆:10
LittlePeng | 园豆:3445 (老鸟四级) | 2010-03-01 19:45
但是 这样设置 那个值这么来呢,我不想设置成不变的 ,想通过登录后来获取信息再赋值
支持(0) 反对(0) 蓝蓝的天 | 园豆:50 (初学一级) | 2010-03-01 20:41
0

从第一次请求开始CookieContainer  cookies  需要保存起来。

每次请求都需要

req.CookieContainer = cookies;

收获园豆:10
steven hu | 园豆:542 (小虾三级) | 2010-03-01 22:28
-1

好像你少了这些:

Req.Proxy = null;
Req.UseDefaultCredentials = true;

参考http://blogs.msdn.com/dgorti/archive/2005/08/16/452347.aspx

收获园豆:10
风影极光 | 园豆:1573 (小虾三级) | 2010-03-02 09:51
如果没有必要,这些都可以不加的.
支持(0) 反对(0) 三阶 | 园豆:1436 (小虾三级) | 2010-03-06 19:50
0

这个建议你使用HttpWatch监视下,程序中那几个cookie是需要使用到的,然后在写代码时针对这几个cookie进行存储。程序中并是所有的cookie都需要使用到的。

收获园豆:10
西越泽 | 园豆:10775 (专家六级) | 2010-03-08 13:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册