我要求将CRM Online连接到Drupal网站。由于我没有编写自定义Web服务的好处,因此我使用了CRM SOAP接口和PHP。
这种情况在上个星期工作正常,但在上周有点停止工作。我可以检索所需的令牌以进行身份验证,但是我发送的任何请求都会导致空白响应。
有没有其他人遇到过这个或者能指出我最好的方向来弄清楚发生了什么。
答案 0 :(得分:0)
我发现了答案。
以下是我的代码的快照
$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版本它开始工作了!所以我没有完全注释掉这一行。
希望这有助于其他人!