curl_exec не работает с интеграцией Veeva Vault в CakePHP

У меня есть сайт, написанный на CakePHP, которому необходимо загрузить файлы из Veeva Vault. Я унаследовал эту функцию проверки подлинности от кого-то еще, который должен возвращать идентификатор сеанса из Veeva, но он возвращает false на curl_exec (), когда он должен возвращать true. Мне сказали, что функция работает с тестовым файлом вне CakePHP, поэтому я думаю, что это что-то связанное с Тортом.

private function Auth() { try { $url = self::VVURL . '/auth?username=' . self::VVUSERNAME . '&password=' . self::VVPASS; $curl = curl_init($url); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/json;charset=UTF-8")); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, null); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); $json_response = curl_exec($curl); if ($json_response != true) { throw new Exception (curl_error($curl), curl_errno($curl)); } $status = curl_getinfo($curl, CURLINFO_HTTP_CODE); if($status != 200) { die('Error: call to URL $url failed with status "' . $status .'", response "' . $json_response. '", curl_error "' . curl_error($curl) . '", curl_errno "' . curl_errno($curl). '"'); } else { //Enable following line to DEBUG //print_r($json_response); } curl_close($curl); $return = json_decode($json_response); foreach($return as $k => $v) { if($k == 'sessionId') $this->sessID = $v; } return $this->sessID; } catch(Exception $e){ trigger_error(sprintf( 'Curl failed with error #%d: %s', $e->getCode(), $e->getMessage()), E_USER_ERROR); } } 

curl_init ($ url) возвращает ресурс (148, curl) . Я не знаю, правильно это или нет.

curl_getinfo ($ curl, CURLINFO_HTTP_CODE) возвращает 200, поэтому я знаю, что это хорошо.

curl_exec ($ curl) возвращает false.

Возврат ловушки:

Fatal Error Error: Curl failed с ошибкой # 56: проблема (2) в данных с кодировкой с чередованием
Файл: C: \ wamp \ www \ content \ app \ Vendor \ veeva \ veeva.php
Строка: 109 Примечание. Если вы хотите настроить это сообщение об ошибке, создайте приложение \ View \ Errors \ fatal_error.ctp

К сожалению, я не могу найти полезной документации Veeva.

РЕШЕНИЕ

Мне нужно было добавить следующий параметр curl перед запуском curl_exec (),

 curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); 

Это вернуло правильный ответ json. Хотя он не мог быть непосредственно введен в json_decode () и должен был быть отредактирован как таковой:

 $json_utf8 = utf8_decode($json_response); $return = json_decode(str_replace("?", "", $json_utf8)); 

РЕШЕНИЕ

Мне нужно было добавить следующий параметр curl перед запуском curl_exec (),

 curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); 

Это вернуло правильный ответ json. Хотя он не мог быть непосредственно введен в json_decode () и должен был быть отредактирован как таковой:

 $json_utf8 = utf8_decode($json_response); $return = json_decode(str_replace("?", "", $json_utf8));