【问题标题】:Receiving HTTP header 406 error接收 HTTP 标头 406 错误
【发布时间】: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。

标签: php dbpedia


【解决方案1】:

406 表示 application/json 不可用。

来自维基百科:

406 Not Acceptable 请求的资源只能生成根据请求中发送的Accept headers不可接受的内容。

<?php
    $url = "http://dbpedia.org/page/Los_Angeles";
    $data = file_get_contents($url);
    echo $data;
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 2014-03-15
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 2015-03-17
    相关资源
    最近更新 更多