Я пытаюсь получить широту и долготу от информации ячейки башни с помощью геолокации Google api . Он требует действительного 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 в файле. Что я делаю не так ?