Anonymous
Сообщение об ошибке Curl «Объект класса stdClass не может быть преобразован в строку» при использовании Google ComputeRo
Сообщение
Anonymous » 27 янв 2026, 19:43
Я использую запрос на завивку для моего внутреннего 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
1769532214
Anonymous
Я использую запрос на завивку для моего внутреннего php-класса для доступа к вычислительному маршруту Google. когда я запускаю запрос на завивку со строкой, он работает (как показано ниже). Однако динамически генерируя значения с помощью массива, а затем преобразуя их в объект, я получаю сообщение об ошибке; "Объект класса stdClass не может быть преобразован в строку" Пример кода: Это работает: [code]$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); [/code] Однако, когда я попробовал то же самое с динамически сгенерированным массивом, возникла ошибка: Пример ошибки: [code]$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); [/code] Массив: [code]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' ]; } [/code] Почему это работает, когда мой параметр жестко запрограммирован, но не работает, если я передаю массив динамически? Подробнее здесь: [url]https://stackoverflow.com/questions/79877016/curl-error-message-object-of-class-stdclass-could-not-be-converted-to-string-w[/url]