我想使用mac地址获取设备的经度和纬度,而不是没有返回任何值。
我已激活Google地理位置API并启用了结算功能。请帮助。
<?php
$mac = "E4:D5:3D:E4:05:BF";
//encode the data in JSON
$wifiAccessPoints = array("macAddress"=>$mac);
$wifiAccessPoints = json_encode($wifiAccessPoints);
$API_key = "AIzaSyApOf.................";
$url = "https://www.googleapis.com/geolocation/v1/geolocate?key=$API_key";
$client = curl_init($url);
//send the request to resource
curl_setopt($client, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($client, CURLOPT_HEADER, false);
curl_setopt($client, CURLOPT_POSTFIELDS, $wifiAccessPoints);
curl_setopt($client, CURLOPT_RETURNTRANSFER,true);
curl_setopt($client, CURLOPT_HTTPHEADER,array("Content-type: application/json", "Content-Length".strlen($wifiAccessPoints)));
curl_setopt($client,CURLOPT_POST,true);
//get response from request.
$response = curl_exec($client);
//decode format response
//$result = json_decode($response);
$status = curl_getinfo($client, CURLINFO_HTTP_CODE);
echo $status."<br>";
echo $response."<br>";
?>
答案 0 :(得分:0)
返回的错误表明您的请求格式正确,但API无法找到它的地理位置。 API documentation可以说明你的结果:
原因: notFound
域名:地理位置
状态代码: 404
说明:请求有效,但未返回任何结果。
因此,您似乎已成功执行了您的请求,但Google并不总是能够告诉您特定WiFi接入点的位置(无法让他们全部了解这些接入点)。
文档还说明了
请求正文的wifiAccessPoints数组必须包含两个或更多个WiFi接入点对象。 macAddress是必需的;所有其他字段都是可选的。
看起来您只有一个接入点,通过IP查找可能非常准确。 The documentation提供了大量有关如何重新格式化输入JSON的信息。