【问题标题】:cURL with REST API from PHPcURL 与 PHP 的 REST API
【发布时间】:2014-01-17 12:04:44
【问题描述】:

我正在尝试在两个系统之间建立连接,其中一个是主系统。连接将通过 cURL 提供。我有这个功能:

private function build_post($url, $params, $authentificate = true) {

    //url-ify the data for the POST

    $params_string= http_build_query($params);

    $curl = curl_init($url);

    //set the url, number of POST vars, POST data
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl,CURLOPT_POST, count($params));
    curl_setopt($curl,CURLOPT_POSTFIELDS, $params_string);

    if ($authentificate) {
        curl_setopt($curl, CURLOPT_HTTPHEADER, array(
            'x-api-key: key1',
            'x-api-skey: key2'
        ));
    }

    //execute post
    $curl_response = curl_exec($curl);

    if ($curl_response === false) {
        $info = curl_getinfo($curl);
        curl_close($curl);
        echo('error occured during curl exec. Additioanl info: '.var_export($info));
        }
    else
    {
        echo 'Responze OK';
        curl_close($curl);
    }
}

从我尝试连接的系统中,我只有 2 个指令:

对 REST API 的每个请求都必须通过在请求标头中提供发送方的有效访问权限和密钥来进行身份验证。

例如:

x-api-key: D6d03y3h0iEW7Iz3xW9127a0xrh1ib

x-api-skey: sc1vcOTTFLuqjFa5u08UKtKaWl48XSqlm8jMQvrnXnuPvRjqTPgIDI6P1YcR

第二条指令是请求的帖子应该是什么样子。

我不知道出了什么问题,我总是这样:

array ( 'url' => 'https://rest.api.profitee.com/public/subscribe', 'content_type' => NULL, 'http_code' => 0, 'header_size' => 0, 'request_size' => 0, 'filetime' => -1, 'ssl_verify_result' => 1, 'redirect_count' => 0, 'total_time' => 0.037060000000000002662314813051125383935868740081787109375, 'namelookup_time' => 0.0003939999999999999817472395857720357525977306067943572998046875, 'connect_time' => 0.037070999999999999785504911642419756390154361724853515625, 'pretransfer_time' => 0, 'size_upload' => 0, 'size_download' => 0, 'speed_download' => 0, 'speed_upload' => 0, 'download_content_length' => -1, 'upload_content_length' => -1, 'starttransfer_time' => 0, 'redirect_time' => 0, 'certinfo' => array ( ), 'primary_ip' => '54.229.78.229', 'redirect_url' => '', )error occured during curl exec. Additioanl info: NULL

有人可以帮我完成它吗?谢谢

【问题讨论】:

  • 你有什么错误吗?
  • 不,这个数组就是我得到的全部......
  • 您在响应中出现错误“curl exec 期间发生错误。添加信息:NULL”,您可以使用 curl_error($curl_response);这可能会给你更多信息
  • 我得到:curl exec 期间发生错误。附加信息:SSL 对等证书或 SSH 远程密钥不正确
  • 添加了一个解决方案试试这个。

标签: php api rest curl


【解决方案1】:

添加以下行,看看它是否有效。

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);  
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); 

【讨论】:

  • 没用,但是在我将 verifyhost 更改为 false 后,我得到“无法验证用户和域。线程被中止。”所以我要和他们一起更改一些电子邮件......仍然非常感谢:)
  • 确定!通常 ssl 证书问题会产生此类问题,请随时发布他们最终给出的解决方案。看到这个会很有趣。
  • 仅供参考 - 这些设置会让您面临潜在的 MITM 攻击:stackoverflow.com/questions/13740933/…
猜你喜欢
  • 1970-01-01
  • 2015-07-31
  • 1970-01-01
  • 1970-01-01
  • 2017-06-06
  • 1970-01-01
  • 1970-01-01
  • 2012-07-29
  • 1970-01-01
相关资源
最近更新 更多