我正在尝试以下代码,因为重定向不能使用php file_get_contents,但这不会返回任何内容:
function file_get_contents_curl($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$url = 'http://www1.macys.com/shop/product/michael-michael-kors-wallet-jet-set-monogram-ziparound-continental?ID=597522&CategoryID=26846&RVI=Splash_5';
$html = file_get_contents_curl($url);
echo "html is ".$html;
答案 0 :(得分:9)
快速查看输出:
curl --max-redirs 3 -L -v $url
表示在设置Cookie时,302重定向会重定向到相同的网址。
设置cookie jar似乎正在修复'它:
curl -c /tmp/cookie-jar.txt --max-redirs 3 -L -i $url
所以..启用cookie(jar)
编辑:
您可以在现有代码中添加一行以使其正常工作:
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).DIRECTORY_SEPERATOR.'c00kie.txt');
答案 1 :(得分:2)
您可以使用CURLOPT_VERBOSE
选项调试您的请求。
将输出写入STDERR,或使用CURLOPT_STDERR指定的文件。
$curl_debug_file = __DIR__.DIRECTORY_SEPARATOR.'curl.log';
$fh = fopen($curl_debug_file, "w+");
curl_setopt($handle, CURLOPT_STDERR, $fh);
curl_setopt($ch, CURLOPT_VERBOSE, true);
答案 2 :(得分:0)
如果你跑
echo curl_error($ch);
在curl_exec之后,你会看到:
最多(20)次重定向
找出它重定向的原因以及