我有一个要求,需要将CRM Online连接到Drupal网站。 由于我没有编写自定义Web服务的好处,所以我使用了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,它开始工作! 因此,我只是完全注释掉了这一行,而不是这个。
希望这对其他人有所帮助!