1

我想从 nokia here location api 获取企业信息。下面是我的代码:

$NokiaPlaceURL = 'http://places.nlp.nokia.com/places/v1/discover/search?app_id='.APP_ID.'&app_code='.APP_CODE.'&at='.$at.'&q='.$keyword.'&size=10';
        //echo $NokiaPlaceURL; exit;
        $NokiaPlaceURL = file_get_contents($NokiaPlaceURL);
        var_dump($NokiaPlaceURL);exit;

它给出了以下错误。我该如何解决这个问题?

Warning: file_get_contents(http://places.nlp.nokia.com/places/v1/discover/search?app_id=---&app_code=---&at=40.708322%2C-74.008881&q=food&size=10) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 406 Not Acceptable in /opt/lampp/htdocs/test/nokia_here.php on line 29
bool(false) 

谢谢

4

1 回答 1

1

您需要为您的请求设置一些 HTTP 标头。从 API 文档中,我看到您需要设置Acceptapplication/json以 JSON 编码的数据或application/xhtml+xmlXML 数据。标头被标记为可选,但是,我怀疑 PHP 设置了自己的标头,包括Accept没有诺基亚 API 期望的值。

但是,关于如何通过 向 GET 请求添加标头file_get_contents,您可以使用流上下文。例如:

$Options = array(
    'http' => array(
        'method' => 'GET',
        'header' => 'Accept: application/json'
    )
);

$Context = stream_context_create($Options);
$File = file_get_contents($URL, false, $Context);
于 2013-04-22T19:26:42.247 回答