Php WikipediaAPI的curl错误,但可以通过浏览器工作
我想使用WikipediaAPI通过php和curl获得一个页面。 我在上阅读了说明,我的示例与之类似 目的是自动获取给定标题的电影信息Php WikipediaAPI的curl错误,但可以通过浏览器工作,php,curl,wikipedia-api,Php,Curl,Wikipedia Api,我想使用WikipediaAPI通过php和curl获得一个页面。 我在上阅读了说明,我的示例与之类似 目的是自动获取给定标题的电影信息 function getWikipediaFilmUrl($filmName) { $apiurl = "http://it.wikipedia.org/w/api.php"; $parameters['format'] = "json"; $parameters['prop'] = "revisions"; $paramet
function getWikipediaFilmUrl($filmName) {
$apiurl = "http://it.wikipedia.org/w/api.php";
$parameters['format'] = "json";
$parameters['prop'] = "revisions";
$parameters['rvprop'] = "content";
$parameters['action'] = "query";
$parameters['titles'] = rawurlencode(ucwords($filmName));
$parameters['redirects'] = "";
$fields_string = "";
$url = "";
foreach ($parameters as $key => $value) {
$fields_string[] = $key . '=' . $value;
}
$url = $apiurl . '?' . implode('&', $fields_string);
//debug
print_r($parameters);
echo "<br /><a href='$url'>Resulting URL: $url</a><hr />";
//
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, FALSE);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 Safari/537.36');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_REFERER, "");
curl_setopt($ch, CURLOPT_HEADER, false);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
}
getWikipediaFilmUrl("main page");
这段代码应该得到主页。生成的URL是
如果您试图用浏览器打开它,它可以工作,但通过curl获取时会返回一个带有一般错误的页面和有关api使用情况的文本文档
我只是尝试在curl调用中复制并粘贴生成的url,它可以工作。。。。到底为什么$url不起作用,但它的内容呢 变化
$url = $apiurl . '?' . implode('&', $fields_string);
到
您不需要逃避这些符号,因为您不需要将它们输出到HTML中,而只是直接将它们输入到curl中
$url = $apiurl . '?' . implode('&', $fields_string);