残りのリクエストの結果として xml を取得しようとしていますが、動作は常に奇妙です。
実際のブラウザで試してみると、リクエストの結果ではなく、最後から2番目のリクエストに関連付けられた結果が常に得られますlast/current
。おそらくサーバーのキャッシュの問題です...とにかく、リクエストを2つにするだけでこれを解決しようとしましたしかし、ここでは動作がさらに不安定で、以前のリクエストに関連する結果がランダムな回数返され、運が良ければ最終的に要求された実際の xml が返されます (つまり、要求ループを作成した場合)。
sleep()
関数でリクエスト間に時間を設定すると問題は解決すると思いましたが、何もありませんでした。
また、ブラウザーヘッダーを使用してcurlリクエストを作成しようとしました...それでも同じ問題です。ブラウザでは 2 回目に動作し、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);