在使用file_get_contents获取数据时遭遇302重定向,从而获取不了。转而使用curl,curl却报错:object moved
gg搜索下。把原先的:
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,'http://www.domain.com/today/today.asp');
culr_setopt($ch,CURLOPT_HEADER,0);
$string = curl_exec($ch);
改为
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,'http://www.domain.com/today/today.asp');
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postArray);
$string = curl_exec($ch);
这样便能正常显示了。但是上传到centos服务器上却不行了。服务器防火墙是允许访问该网站的。最终原因不明。
又找到如下函数,可以返回重定向的url
function _curl_post_302($url, $vars) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // 302 redirect
curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);
$data = curl_exec($ch);
$Headers = curl_getinfo($ch);
curl_close($ch);
if ($data&&$Headers)
return $Headers["url"];
else
return false;
}
$url = _curl_post_302('http://www.domain.com/today/today.asp',$arr); //返回的则是重定向url
然后可以使用file_get_contents()抓取这个新的地址数据了。这样就得到了。