Php 对Rest客户端使用WikipediaAPI
我正在尝试使用MediaWiki获取wikipedia页面(来自特定类别)。为此,我将遵循教程清单3。列出类别中的页面。我的问题是:如何在不使用Zend框架的情况下获取Wikipedia页面?有没有基于php的Rest客户端不需要安装?因为Zend需要先安装他们的软件包和一些配置。。。我不想做这些事 在谷歌搜索和一些调查之后,我发现了一个名为cURL的工具,将cURL与PHP结合使用还可以构建一个rest服务。我对实现rest服务非常陌生,但已经尝试在php中实现了一些东西:Php 对Rest客户端使用WikipediaAPI,php,rest,mediawiki-api,Php,Rest,Mediawiki Api,我正在尝试使用MediaWiki获取wikipedia页面(来自特定类别)。为此,我将遵循教程清单3。列出类别中的页面。我的问题是:如何在不使用Zend框架的情况下获取Wikipedia页面?有没有基于php的Rest客户端不需要安装?因为Zend需要先安装他们的软件包和一些配置。。。我不想做这些事 在谷歌搜索和一些调查之后,我发现了一个名为cURL的工具,将cURL与PHP结合使用还可以构建一个rest服务。我对实现rest服务非常陌生,但已经尝试在php中实现了一些东西: <?php
<?php
header('Content-type: application/xml; charset=utf-8');
function curl($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$wiki = "http://de.wikipedia.org/w/api.php?action=query&list=allcategories&acprop=size&acprefix=haut&format=xml";
$result = curl($wiki);
var_dump($result);
?>
很抱歉花了这么长时间回复,但迟回复总比不回复好 当我在命令行上运行代码时,得到的输出是:
string(120) "Scripts should use an informative User-Agent string with contact information, or they may be IP-blocked without notice.
"
因此,问题似乎在于,您没有告诉cURL发送自定义用户代理头,这是一个意外。要解决此问题,请按照该页底部给出的建议,在脚本中添加如下行(与其他curl\u setopt()
调用一起):
另外,您可能也不想设置应用程序/xml
内容类型,除非您确定内容实际上是有效的xml。特别是,var_dump()
的输出将不是有效的XML,即使输入是无效的
对于测试和开发,我建议要么从命令行运行PHP,要么使用text/plain
内容类型。或者,如果愿意,可以使用text/html
并使用htmlspecialchars()
对输出进行编码
Ps.将此作为社区维基的答案,因为我意识到这个问题已经被解决。如果您告诉我们错误是什么,可能会有所帮助。@IlmariKaronen请查看问题的
更新部分。
string(120) "Scripts should use an informative User-Agent string with contact information, or they may be IP-blocked without notice.
"
$agent = 'ProgramName/1.0 (http://example.com/program; your_email@example.com)';
curl_setopt($ch, CURLOPT_USERAGENT, $agent);