C#模拟http请求出错,求大神帮忙 用fiddler看看在网页面上正常情况下是如何的,如果中间有302跳转,导致cookie没有回传回来的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我第一个请求就是进入http://www.baidu.com/获得百度的一个COOKIE然后用这个COOKIE进入百度的另一个页面https://passport.baidu.com/v2/api/?getapi&class=login&tpl=mn&tangram=true如果login_token如果有值就那cookie传入正确,但是每次都提示the fisrt two args should be string type:0,1! 顶一下 ,没做过web http://blog.csdn.net/archerluke/article/details/6310893 这个cookie获得好像不全BDSVRTM=0; H_PS_PSSID=3784_4199_1434_4321_4414_4263_4450另一个Java程序获得的COOKIEBAIDUID=3ED25B738DA43F24CC0482CD03B23CAE:FG=1;BDSVRTM=0;H_PS_PSSID=1464_4420_4415_4405_4263_445 cookie有有效期和域的限制,这两个非常重要,你必须单独处理,而不能直接拿上次获取的cookie用在下次。 cookie获得后马上就使用的,而且从百度拿到了,第二个页面也是百度的。我用JavaSE使用没有问题。C#我不知道错在哪里 你确定第二个页面的地址没有给错吗?我怎么不管是否登录,打开那个页面都是给我输出一段代码文字,这让我如何测试?要清空cookie,然后直接打开页面就会提示,打开那个页面需要百度的一个COOKIE 我清空了Cookie的,但是打开的时候,百度会自动分配我2个cookie,打开也没有报错,如果不情况的话,我能查到5个cookie,清空后也可以打开,临时分配我2个cookie而已,而且不论是否清空cookie,打开看到的效果一样(谷歌浏览器测试的)。我想我没必要为了查看cookie的情况,单独写段程序吧,直接浏览器调试效果更好,更能说明情况。 原来那个页面是作为jsonp的方式返回的,难怪看起来都是代码,怪怪的。可以确定一点,你必须提供BAIDUID和H_PS_PSSID这两个Cookie,也只需要这两个,不要多余的。另外这两个Cookie的所属域必须是.baidu.com,不能带www,因为那个涉及到跨域传递Cookie,从www.baidu.com的传递到passport.baidu.com cookie获得后马上就使用的,而且从百度拿到了,第二个页面也是百度的。我用JavaSE使用没有问题。C#我不知道错在哪里既然java能用,为什么还要搞另一种? string ckstr = response.Header["Set-Cookie"];用这种方式 取一下Cookies 试试 取cookie没有问题,问题在请求的时候怎么加入cookie,我不知道错哪了,加进去的时候好像少了,第一次请求得到了3个cookie,但是每次赋值的时候只有两个,少了一个BAIDUID的cookie domain的问题 如果多个二级域名之间共享cookie,则设置domain=dipan.com 不要写 domain=sg7.dipan.com取cookie没有问题,问题在请求的时候怎么加入cookie,我不知道错哪了,加进去的时候好像少了,第一次请求得到了3个cookie,但是每次赋值的时候只有两个,少了一个BAIDUID的cookie 添加cookie的时候,如果删除域名设置,直接报错,因为它不是简单的添加,而是要验证域名是否一致,因此你需要自己判断那个域名,并修改到一致的域名上再添加,我11楼已经提醒过你有域的限制,你却不当回事,18楼更是指出了域的实际内容,你还看不懂问题所在吗? 你的cookie用错了CookieContainer cookieContainer=new CookieContainer();HttpWebRequest hp = null;//把cookie放入当次请求中hp.CookieContainer = this.cookieContainer;//响应后把cookie存起来,以便下次请求时用HttpWebResponse wr = (HttpWebResponse)hp.GetResponse();cookieContainer.Add(wr.Cookies); 将cookie 根据分号,分割成多组;然后分别依次加入 我第一次请求的时候有把cookie存到一个对象里,第二次请求的是有有add(cookie)不过CookieContainer 不是同一个这个有关系? 域名我已经看过了哪两个都是.baidu.com,所以不是cookie的问题,是C#代码某个地方错啦 我第一次请求的时候有把cookie存到一个对象里,第二次请求的是有有add(cookie)不过CookieContainer 不是同一个这个有关系?当然要用同一个啦,因为你第二次请求想用第一次请求的会话 为什么不能显示在checkedListBox C#调用WebService问题 装箱与解引用的问题 GridView1_RowUpdating问题 给.NET初学者的推荐 免注册的书籍下载 一个小问题 呼唤高手,.net如何用dataset实现这个功能! 求教sql语句的update问题 C#里可不可以有char* 用C#在WEB页上画图形??? C#开发OUTLOOK 局域网通讯簿插件! MVVM 中的特殊事件的绑定
获得百度的一个COOKIE然后用这个COOKIE进入百度的另一个页面
https://passport.baidu.com/v2/api/?getapi&class=login&tpl=mn&tangram=true
如果login_token如果有值就那cookie传入正确,但是每次都提示the fisrt two args should be string type:0,1!
BDSVRTM=0; H_PS_PSSID=3784_4199_1434_4321_4414_4263_4450
另一个Java程序获得的COOKIE
BAIDUID=3ED25B738DA43F24CC0482CD03B23CAE:FG=1;BDSVRTM=0;H_PS_PSSID=1464_4420_4415_4405_4263_445
我用JavaSE使用没有问题。
C#我不知道错在哪里
要清空cookie,然后直接打开页面就会提示,打开那个页面需要百度的一个COOKIE
可以确定一点,你必须提供BAIDUID和H_PS_PSSID这两个Cookie,也只需要这两个,不要多余的。另外这两个Cookie的所属域必须是.baidu.com,不能带www,因为那个涉及到跨域传递Cookie,从www.baidu.com的传递到passport.baidu.com
我用JavaSE使用没有问题。
C#我不知道错在哪里
既然java能用,为什么还要搞另一种?
CookieContainer cookieContainer=new CookieContainer();
HttpWebRequest hp = null;
//把cookie放入当次请求中
hp.CookieContainer = this.cookieContainer;//响应后把cookie存起来,以便下次请求时用
HttpWebResponse wr = (HttpWebResponse)hp.GetResponse();
cookieContainer.Add(wr.Cookies);
我第一次请求的时候有把cookie存到一个对象里,第二次请求的是有有add(cookie)不过CookieContainer 不是同一个这个有关系?
我第一次请求的时候有把cookie存到一个对象里,第二次请求的是有有add(cookie)不过CookieContainer 不是同一个这个有关系?当然要用同一个啦,因为你第二次请求想用第一次请求的会话