PHP消息:PHP警告:file_get_contents(' url_here')无法打开流:HTTP请求失败! HTTP / 1.1 406不可接受

时间:2016-08-23 07:04:52

标签: php api request http-post

我试图通过POST请求从api HERE获取数据到我的应用程序,它确实在error.log中返回错误。

  

PHP消息:PHP警告:file_get_contents(' url_here')无法打开流:HTTP请求失败! HTTP / 1.1 406不可接受

这是我的代码:

$url = 'http://inventory.api.eciaauthorized.com/api/Search/Query';
$fields = array(
  'CompanyID' => 'company_id',
    'APIKey' => 'api_key_here',
    'Queries' => array(
      'SearchToken' => 'query_string_here',
    ),
    'InStockOnly' => true,
    'ExactMatch' => true,
    'IsCrawler' => true
);

$postdata = http_build_query($fields);
$opts = array('http' =>
    array(
        'method'  => 'POST',
        'header'  => 'Content-type: application/json ' . ' Accept: application/json',
        'content' => $postdata
    )
);

$context = stream_context_create($opts);

$result = file_get_contents($url, false, $context);
var_dump($result);

当我var_dump返回结果时:

  

我在这里缺少什么?请帮忙。感谢。

有回答的

From This Question会抛出相同的错误。

$result = fopen($url, "r",true, $context);

有人建议用户 CURL ,所以我这样做是我的代码:

curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Accept: application/json',
    'Content-Type: application/json'
));
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,  $postdata);
curl_setopt($ch, CURLOPT_VERBOSE, true);
//execute post
$result['body'] = curl_exec($ch);
$result['headers'] = curl_getinfo($ch);

if(curl_error($ch))
{echo 'error:' . curl_error($ch);}

var_dump($ch);

curl_close($ch);

当我 var_dump 时,$ result返回

  

并且没有包含数据,并且在

上引发错误
  

" HTTP / 1.1 406 Not Acceptable Cache-Control:no-cache Pragma:no-cache Expires:-1 Server:Microsoft-IIS / 8.0 X-AspNet-Version:4.0.30319 X-Powered-By :ASP.NET日期:2016年8月24日星期三06:43:54 GMT内容长度:0

我完成了对该错误的研究,发现标题不完整,但我正确地遵循了API文档。请帮忙。感谢。

这些在文档中:

  

ECIA Inventory API通过HTTP POST接收搜索请求。它支持JSON和XML请求和响应。请通过包含"内容类型"以及您的要求表明您想要使用哪种格式。并且"接受"标题设置为" application / json"或" application / xml"。

     

定义了请求和响应正文的格式   下面。 API的网址是:   https://inventory.api.eciaauthorized.com/api/Search/Query

0 个答案:

没有答案