我尝试使用API在维基百科中搜索填写表单的用户输入的单词。因此,如果他们输入了" cat"然后,API将在表单中搜索维基百科,查找包含单词" cat"的条目。我得到了它的工作,但现在我收到了这条消息:
Warning: file_get_contents(http://en.wikipedia.org/w/api.php?action=opensearch&search=parrott): failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in /var/www/html/flam1-api.php on line 22
我读到可能需要用户代理,但我不确定究竟要做什么。这是我的代码:
echo "<h1>Which LOLcat are you? Results!</h1>";
$visit_id = $_COOKIE['visit_id'];
$all_my_variables = json_decode(file_get_contents("/var/www/html/data/$visit_id.json"));
//var_dump($all_my_variables);
$animal = $all_my_variables ->favoriteanimal;
echo "When searching wikipedia entries on your favorite animal, which is a $animal, we got the results:<br>";
$website = file_get_contents('http://en.wikipedia.org/w/api.php?action=opensearch&search='.urlencode($animal).'');
echo $website[0];
我非常感谢你的帮助!
答案 0 :(得分:3)
您需要设置用户代理(可能使用curl
扩展名而不是file_get_contents
)。 file_get_contents
使用的默认用户代理被明确阻止,因为它通常与滥用行为相关联。
答案 1 :(得分:1)
有些网站会阻止使用file_get_contents。 我现在没有机会测试,但尝试使用此函数而不是file_get_contents。
function get_url_contents($url){
$crl = curl_init();
$timeout = 5;
curl_setopt ($crl, CURLOPT_URL,$url);
curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
$ret = curl_exec($crl);
curl_close($crl);
return $ret;
}