У меня было требование подключить CRM Online к веб-сайту Drupal. Поскольку у меня не было возможности написать собственный веб-сервис, я использовал интерфейс CRM SOAP и PHP.
Это работало хорошо в течение нескольких месяцев, однако на прошлой неделе, и немного это перестало работать. Я могу получить требуемые токены для аутентификации, но любой отправленный мной запрос приводит к пустому ответу.
Кто-нибудь еще сталкивался с этим или может указать мне в лучшем направлении, чтобы выяснить, что происходит.
Я обнаружил ответ.
Ниже приведен снимок моего кода
$cURLHandle = curl_init();
curl_setopt($cURLHandle, CURLOPT_URL, $soapUrl);
curl_setopt($cURLHandle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($cURLHandle, CURLOPT_TIMEOUT, 60);
curl_setopt($cURLHandle, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($cURLHandle, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($cURLHandle, CURLOPT_SSLVERSION, 3);
curl_setopt($cURLHandle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($cURLHandle, CURLOPT_HTTPHEADER, $headers);
curl_setopt($cURLHandle, CURLOPT_POST, 1);
curl_setopt($cURLHandle, CURLOPT_POSTFIELDS, $request);
$response = curl_exec($cURLHandle);
curl_close($cURLHandle);
Две вещи, которые я должен исправить здесь. Во-первых, я ничего не делал, когда возникла проблема, когда я действительно должен был заменить эту строку
$response = curl_exec($cURLHandle);
С этим
if( ! $response = curl_exec($cURLHandle))
{
trigger_error(curl_error($cURLHandle));
}
И, во-вторых, кажется, что используемая версия SSL была изменена. Изменяя эту строку
curl_setopt($cURLHandle, CURLOPT_SSLVERSION, 3);
До версии 4 вместо 3 начал работать! Поэтому вместо этого я только что полностью закомментировал эту строку.
Надеюсь, это поможет кому-то еще!
Других решений пока нет …