<?
$request_url = 'http://www.betjamaica.com/livelines2008/lines.asmx/Load_Latest_Lines?SportType=Football&SportSubType=NFL&GameType=GAME';
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $request_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);
print "<textarea rows='10' cols='80'>";
print htmlentities($data);
print "</textarea>";
exit();
?>
这在textarea中没有产生任何结果,但应该有。其他饲料工作正常。
答案 0 :(得分:3)
你有一个错字。试试
print htmlentities($data);
而不是
print htmlentities($date);
此外,建议将error_reporting转换为如果您尝试使用不存在的变量通知您的级别。你可以使用:
来做到这一点error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
E_NOTICE
错误报告级别会为您提供使用未初始化变量的警告。
答案 1 :(得分:0)
以下是我使用cURL调试页面抓取问题的演练:
让我们试试这个例子。
您提供的网址在浏览器中有效,但是......
启用CURLOPT_VERBOSE会显示以下内容:
* About to connect() to www.betjamaica.com port 80
* Trying 72.52.5.34... * connected
* Connected to www.betjamaica.com (72.52.5.34) port 80
> GET /livelines2008/lines.asmx/Load_Latest_Lines?SportType=Football&SportSubType=NFL&GameType=GAME HTTP/1.1
Host: www.betjamaica.com
Accept: */*
* Empty reply from server
* Connection #0 to host www.betjamaica.com left intact
* Closing connection #0
服务器没有回复。浏览器请求和cURL请求之间的唯一区别是浏览器发送更多标头。因此,要做的是尝试添加浏览器标头,直到它开始工作。如果您复制浏览器发送的所有标头,请求应该是相同的,因此功能正常。
在这里,我只是将我的Firefox请求标题复制并粘贴到PHP中:
$request_url =
'http://www.betjamaica.com/livelines2008/lines.asmx/Load_Latest_Lines?SportType=Football&SportSubType=NFL&GameType=GAME';
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $request_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$headers = array(
'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.16) Gecko/2009120208 Firefox/3.0.16',
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language: en-us,en;q=0.5',
'Accept-Encoding: gzip,deflate',
'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',
'Keep-Alive: 300',
'Connection: keep-alive',
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$data = curl_exec($ch);
curl_close($ch);
var_dump($data);
它有效。稍微进行一些实验就会发现除了User-Agent之外的所有标题都可以删除:
$headers = array(
'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.16)',
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
你有:显然,这个IIS服务器拒绝在没有User-Agent的情况下提供任何请求。添加一个,你很高兴。