我正在尝试使用Liveperson REST API,我使用以下php代码:
$authorization = "LivePerson appKey=MY_APP_KEY";
$accept = "application/xml";
$contentType = "application/xml";
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "C:/dev/wamp/exported.crt");
curl_setopt($ch, CURLOPT_URL, "https://dev.liveperson.net/api/account/1234?v=1");
curl_setopt($ch,CURLOPT_HTTPHEADER,array('Authorization: '.$authorization,'Accept: '.$accept,'Content-Type: '.$contentType));
curl_exec($ch);
$response = curl_getinfo( $ch );
var_export($response);
curl_close($ch);
请求失败,我已经尝试了以下
任何帮助将不胜感激!
答案 0 :(得分:1)
尝试从代码中的第9行删除getcwd()
。
您正在使用完整路径“C:/dev/wamp/exported.crt”,这是相对于您当前的工作目录,这是错误的。 :)
希望这能解决它
答案 1 :(得分:0)
从您的请求中删除CA证书:
# curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "C:/dev/wamp/exported.crt");
实际上,您必须在此处定义证书颁发机构的公钥/证书文件(在您的案例中为VeriSign)。 Liveperson证书绝对是错误的。
检查证书是否对您的问题负责:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
此设置当然不适合您的项目,但可能有助于确定问题。如果认证过程以某种方式负责,您应该成功连接到Liveperson的API主机。
如果认证过程确实负责,请尝试下载[VeriSign的公共根证书]并将其用作CAINFO:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_CAINFO, "C:/dev/wamp/verisign_root.crt");