Сообщение об ошибке Curl «Объект класса stdClass не может быть преобразован в строку» при использовании Google ComputeRoPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Сообщение об ошибке Curl «Объект класса stdClass не может быть преобразован в строку» при использовании Google ComputeRo

Сообщение Anonymous »

Я использую запрос на завивку для моего внутреннего php-класса для доступа к вычислительному маршруту Google.
когда я запускаю запрос на завивку со строкой, он работает (как показано ниже).
Однако динамически генерируя значения с помощью массива, а затем преобразуя их в объект, я получаю сообщение об ошибке;

"Объект класса stdClass не может быть преобразован в строку"

Пример кода:
Это работает:

Код: Выделить всё

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => 'https://routes.googleapis.com/directions/v2:computeRoutes',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"origin":{
"location":{
"latLng":{
"latitude": 37.419734,
"longitude": -122.0827784
}
}
},
"destination":{
"location":{
"latLng":{
"latitude": 37.417670,
"longitude": -122.079595
}
}
},
"travelMode": "DRIVE",
"routingPreference": "TRAFFIC_AWARE",
"computeAlternativeRoutes": false,
"routeModifiers": {
"avoidTolls": false,
"avoidHighways": false,
"avoidFerries": false
},
"languageCode": "en-US",
"units": "METRIC"
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'X-Goog-Api-Key: myPrivateKey',
'X-Goog-FieldMask: *'
),
));

$res = curl_exec($curl);

curl_close($curl);
DD($res);
Однако, когда я попробовал то же самое с динамически сгенерированным массивом, возникла ошибка:
Пример ошибки:

Код: Выделить всё

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => 'https://routes.googleapis.com/directions/v2:computeRoutes',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>   json_decode(json_encode($this->converToObjects())),
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'X-Goog-Api-Key: myPrivateKey',
'X-Goog-FieldMask: *'
),
));

$res = curl_exec($curl);

curl_close($curl);
Массив:

Код: Выделить всё

public function converToObjects()
{
return [
'origin' => [
'location' => [
'latLng' => [
'latitude' => 37.419734,
'longitude' => -122.0827784
]
]
],
'destination' => [
'location' => [
'latLng' => [
'latitude' => 37.41767,
'longitude' => -122.079595
]
]
],
'travelMode' => 'DRIVE',
'routingPreference' => 'TRAFFIC_AWARE',
'computeAlternativeRoutes' => false,
'routeModifiers' => [
'avoidTolls' => false,
'avoidHighways' => false,
'avoidFerries' => false
],
'languageCode' => 'en-US',
'units' => 'METRIC'
];
}
Почему это работает, когда мой параметр жестко запрограммирован, но не работает, если я передаю массив динамически?

Подробнее здесь: https://stackoverflow.com/questions/798 ... o-string-w
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»