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