curl — php curl_exec возвращает ответ как 1

Я пытаюсь использовать curl как приведенный ниже фрагмент кода. Я уже перепробовал все варианты, которые мог найти подобную проблему. Я добавил все опции setopt, но я все еще получаю ответ 1. Я пытаюсь отправить запрос на сервер и ожидаю ответа json. Что мне не хватает?

 $logger->info('url:'.$service_url);
$curl = curl_init();
$curl_post_data = array(
'username' => 'user1',
'password' => 'welcome'
);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_POSTFIELDS,$curl_post_data);
curl_setopt($curl, CURLOPT_URL, $service_url);
curl_setopt($curl, CURLOPT_HTTPGET, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl,CURLOPT_POST, 1);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl,CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl,CURLOPT_CONNECTTIMEOUT ,3);
curl_setopt($curl,CURLOPT_TIMEOUT, 20);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Accept: application/json'
));

$curl_response = curl_exec($curl);

if ($curl_response === false) {
$info = curl_getinfo($curl);
curl_close($curl);
die('error occured during curl exec. Additioanl info: ' . var_export($info));}
curl_close($curl);
$logger->info('curl_response 11:'.print_r($curl_response));
$decoded = json_decode($curl_response,JSON_PRETTY_PRINT);
if (isset($decoded->response->status) && $decoded->response->status == 'ERROR') {
die('error occured: ' . $decoded->response->errormessage);

}
$logger->info('response ok!');
$logger->info('decoded:'.print_r($decoded));

Обновлено для решения:
как предложено, просто использовал print_r ($ curl_response, true) для регистрации ответа и использовал print_r ($ decoded [‘orderId’]), чтобы получить конкретные значения.

1

Решение

print_r() печать его вывод, это не вернуть Это. Для того, чтобы сохранить результат вызова print_r() в переменной, или отправить его в логгер или еще что-то, вам нужно передать истинное значение в качестве второго параметра.

$x = print_r($foo); // prints formatted $foo and returns true

$x = print_r($foo, true); // prints nothing and returns formatted $foo

Примечание: так как вы установили CURLOPT_RETURNTRANSFER правда, призыв к curl_exec() уже вернет строку. Там действительно нет необходимости передавать это через print_r()просто сбрось строку.

Также обратите внимание: вы хотите убедиться, что json_decode() не возвращается null, И вы, вероятно, также захотите убедиться, что код состояния HTTP равен 200 (что вы можете сделать с помощью curl_getinfo(),

1

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

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

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