Геолокация Google с использованием информации о сотовой вышке - Curl 400 Bad request PHP
Я пытаюсь получить широту и долготу из информации о вышке сотовой связи, используяAPI геолокации Google, Требуется действительный JSON с такой информацией, как MCC, MNC, cellId, lac и т. Д., Мой пост-запрос PHP выглядит следующим образом.
<?php
header("Access-Control-Allow-Origin: *");
$mcc = $_POST["mcc"];
$mnc = $_POST["mnc"];
$cellId = $_POST["cellId"];
$lac = $_POST["lac"];
$post_array = array(
"cellId" => (int) $cellId,
"locationAreaCode" => (int) $lac,
"mobileCountryCode" => (int) $mcc,
"mobileNetworkCode" => (int) $mnc,
);
$post_data = json_encode(array('cellTowers' => array($post_array)));
echo $post_data;
$url = "https://www.googleapis.com/geolocation/v1/geolocate?key=".$api_key; // not including api key here but its there in my code
$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => $url,
CURLOPT_POST => true,
CURLOPT_HEADER => false,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json'
),
CURLOPT_POSTFIELDS => $post_data
));
$result = curl_exec($ch);
echo "Result: ".$result;
curl_close($ch);
?>
Однако я получаю сообщение об ошибке в ответе на неверный запрос. Ошибка показана ниже.
Result: {
"error": {
"errors": [
{
"domain": "geolocation",
"reason": "invalidRequest",
"message": "Bad Request"
}
],
"code": 400,
"message": "Bad Request"
}
}
Я думал, что мой JSON был не в правильном формате, но он работал со следующим исполнением командной строки, так что это не может быть проблемой.
$ curl -d @your_filename.json -H "Content-Type: application/json" -i "https://www.googleapis.com/geolocation/v1/geolocate?key=API_KEY"
Приведенная выше команда в терминале дает правильную широту и долготу с тем же JSON в файле. Что я делаю неправильно ?