Php 对Rest客户端使用WikipediaAPI

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

我正在尝试使用MediaWiki获取wikipedia页面(来自特定类别)。为此,我将遵循教程清单3。列出类别中的页面。我的问题是:如何在不使用Zend框架的情况下获取Wikipedia页面?有没有基于php的Rest客户端不需要安装?因为Zend需要先安装他们的软件包和一些配置。。。我不想做这些事

在谷歌搜索和一些调查之后,我发现了一个名为cURL的工具,将cURL与PHP结合使用还可以构建一个rest服务。我对实现rest服务非常陌生,但已经尝试在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);