Не удалось прочитать матрицу расстояния вызова Bing из входных данных JSON

В моем приложении я извлекаю данные из mysql и вызываю службу матрицы расстояния Bing. Хотя я могу заставить вызов работать нормально, используя почтальон и т. Д. Любой метод, который я пробовал использовать различные методы cURL и unirest, был неудачным. Я вернусь…

Не удалось прочитать ввод JSON

Все, что сказал, вот что я делаю …

Это пример JSON, который я использую, это $ content …

{"origins":{"latitude":"41.654570","longitude":"-71.49605"},"destinations":[{"latitude":"41.172536","longitude":"-71.555274"},{"latitude":"41.18259","longitude":"-71.567168"},{"latitude":"41.341878","longitude":"-71.695282"},{"latitude":"41.356934","longitude":"-71.63798"},{"latitude":"41.361308","longitude":"-71.625706"},{"latitude":"41.347763","longitude":"-71.67328"},{"latitude":"41.373887","longitude":"-71.665345"},{"latitude":"41.488602","longitude":"-71.38332"},{"latitude":"41.493772","longitude":"-71.137993"},{"latitude":"41.486615","longitude":"-71.246164"}],"travelMode":"driving"}

Он прекрасно проходит в JSONLint, а также работает в почтальоне.

$ контент построен из этой базы $ jsonbase …

$jsonbase = array(
"origins" => [],
"destinations" => [],
"travelMode"   => "driving",
);

Вот бит, который я использую после моего возвращения из MySQL …

$url = "https://dev.virtualearth.net/REST/v1/Routes/DistanceMatrix";
$content = json_encode($jsonbase);

$headers = array('Content-Type' => 'application/json',
'Accept' => 'application/json',
'Content-Length' => strlen ($content),
'key' => 'THISISMYKEY');

$body = Unirest\Request\Body::Json($jsonbase);

$response = Unirest\Request::post($url, $headers, $body);

Должно быть, я что-то упустил, я просто не могу на всю жизнь понять это. В почтальоне у меня ключи заголовка настроены одинаково. а для тела я выбрал тип как raw и контент как JSON. Любая помощь или руководство будет высоко ценится. Спасибо!

0

Решение

Разобрался через чат, проблема в том, что API требует origins а также destinations быть массивом lat / lng, но приглядеться к полученному JSON origins не потому, что это было одно значение в исходных данных.

Так что сингл origin кортеж в массив решил это, в результате чего этот JSON:

{
"origins": [{
"latitude": "41.654570",
"longitude": "-71.49605"}],
"destinations": [
{
"latitude": "41.172536",
"longitude": "-71.555274"},
{
"latitude": "41.18259",
"longitude": "-71.567168"},
{
"latitude": "41.341878",
"longitude": "-71.695282"},
{
"latitude": "41.356934",
"longitude": "-71.63798"},
{
"latitude": "41.361308",
"longitude": "-71.625706"},
{
"latitude": "41.347763",
"longitude": "-71.67328"},
{
"latitude": "41.373887",
"longitude": "-71.665345"},
{
"latitude": "41.488602",
"longitude": "-71.38332"},
{
"latitude": "41.493772",
"longitude": "-71.137993"},
{
"latitude": "41.486615",
"longitude": "-71.246164"}
],
"travelMode": "driving"}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector