为什么curl连续请求导致获取数据失败?

事先需要模拟登录,获取cookie等操作。
然后比如循环请求两个地址a和b:

http://xxxx.xxxx.com/purOrder/getOrderDetailInfo.action?billId=123456

http://xxxx.xxxx.com/purOrder/getOrderDetailInfo.action?billId=654321  

假设a返回3条数据,b返回10条数据
现在问题是,用while循环去请求这两个地址,不管我怎么去刷新,还是请求了a后sleep30秒也好,得到的结果要么就是为空,要么就是a的3条数据,要么就是b的10条数据,总是不能得到a和b的总的数据。
ps:如果我在浏览器登录网站后,直接在浏览器输入a地址,然后输入b地址,数据都是可以获取到的

该怎么办呢?已经折腾好几天了。

clipboard.png
把http头打印出来,分别是返回数据的和没有返回数据的
登录后把cookie存在cookie.txt里的,后面的post请求都是把这个文件传进去的,为什么这里cookie会变成这样呢?


clipboard.png
这是登录后打印的http头信息


clipboard.png
这是保存为cookie.txt的cookie信息

clipboard.png

阅读 7.1k
7 个回答

代码呢

没代码怎么确认问题所在

有些时候curl 操作者使用不当就会出一堆自己解决不了的问题,这种情况怎么办呢?找个轮子来解决吧!!

刚好上次刷豆瓣留言用过一个 https://segmentfault.com/a/11...

没有具体网站地址,也不好给你定位问题,猜测是因为你的登录Cookie有误,A验证你的身份不满足条件,就只返回了匿名用户才能看到的数据。

不用循环呢 。直接在页面里file_get_contents呢 就是每个都单独请求一下看看返回的对不对

clipboard.png
把http头打印出来,分别是返回数据的和没有返回数据的
登录后把cookie存在cookie.txt里的,后面的post请求都是把这个文件传进去的,为什么这里cookie会变成这样呢?

你是想一次curl请求获取两个句柄吗?没看懂你的意思

  curl_setopt($curl, CURLOPT_NOSIGNAL, 1);
  curl_setopt($curl, CURLOPT_TIMEOUT_MS, 30000);

你的curl 应该缺少的是这个东西

推荐问题
宣传栏