诺基亚这里位置api不能在PHP中工作

时间:2013-04-22 19:16:21

标签: php json api here-api

我想从诺基亚这里的位置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) 

由于

1 个答案:

答案 0 :(得分:1)

您需要为请求设置一些HTTP标头。从API文档中我发现,对于以JSON编码的数据,您需要将Accept设置为application/json,对于XML数据,您需要application/xhtml+xml。标题被标记为可选,但是,我怀疑PHP设置了自己的标题,包括Accept,它没有诺基亚API所期望的值。

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

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

$Context = stream_context_create($Options);
$File = file_get_contents($URL, false, $Context);