【发布时间】:2013-10-27 22:28:12
【问题描述】:
我正在尝试使用 HTTP 标头在 PHP 中调用 http://dbpedia.org/page/Los_Angeles,以完成我收到的一项教育任务。它必须是这个 URL,即我不能直接使用 JSON URL。
<?php
// Create a stream
$opts = array(
'http'=>array(
'method'=>"POST",
'header'=>"Accept: application/json"
)
);
$context = stream_context_create($opts);
$url = "http://dbpedia.org/page/Los_Angeles";
$data = file_get_contents($url,false,$context);
echo $data;
?>
我遇到了这个错误:
警告:file_get_contents(http://dbpedia.org/page/Los_Angeles):打开流失败:HTTP 请求失败! HTTP/1.1 406 不可接受。
请帮助摆脱这个错误。注意:我阅读了有关此错误的信息并找到了使用 CURL 的建议。但是,我不想安装 CURL。请建议使用file_get_contents。
【问题讨论】:
-
我在我的浏览器中获得了 200,所以只需从您的位置检查它。也许它还需要一个用户代理?您可以提供
stream_context来使用file_get_contents执行此操作,请参阅 PHP 手册。 -
您能根据页脚中的链接获得this JSON version 吗?
:-). -
谢谢哈弗。但是你能详细说明一下用户代理吗?我需要使用dbpedia.org/page/Los_Angeles URL。
-
User Agent 是一个标识你的浏览器的字符串,由于你的浏览器是 PHP 的这种情况,它会有自己的字符串,可能会在远程端被阻止。有关详细信息,请参阅手册或搜索引擎。
-
为什么不能使用 JSON URL?这是一个关键限制,应该直接在您的问题中注明,imo。