0

由于休息请求,我试图获取 xml,但行为总是很奇怪。

如果我在真正的浏览器中尝试它,我总是得到与倒数第二个请求相关联的结果,而不是请求的结果last/current,可能是服务器中的缓存问题......无论如何我试图通过发出两个请求来解决这个问题代码中的时间,但这里的行为更加不稳定,它返回与先前请求相关的结果随机次数,也许幸运的是它最终返回了请求的真实 xml(我的意思是,如果我进行请求循环)。

我认为在sleep()功能请求之间设置一些时间可以解决问题,但没有。

我还尝试使用浏览器标头来发出 curl 请求……但仍然是同样的问题。为什么在浏览器中第二次起作用而在 curl 中却不起作用?我必须说,我请求的 url 包含空格,我用'%20'.. 更改了这些空格。我不知道还能做什么!

这是 curl 请求:

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $uri);
    curl_setopt($ch, CURLOPT_FAILONERROR,1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_AUTOREFERER,1);
    curl_setopt($ch, CURLINFO_HEADER_OUT, true);
    $header=array(
        'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12',
        'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
        'Accept-Language: es-es,en;q=0.5',
        'Accept-Encoding: gzip,deflate',
        'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',
        'Keep-Alive: 115',
        'Connection: keep-alive',
    );
    curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
    $response = curl_exec($ch);
    curl_close($ch);
4

0 回答 0