Геолокация 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 в файле. Что я делаю неправильно ?

Ответы на вопрос(1)

Ваш ответ на вопрос