php curl踩坑笔记

域名指定ip

 public function pullFeeList($startTime, $endTime, $offset)
    {
        list($msec, $sec) = explode(" ", microtime());
        $msec = round($msec * 1000);
        $ts = date('YmdHis', time()) . $msec;
        $param = [
            'appKey' => $this->appKey,
            'startTime' => $startTime,//查询话单的开始时间
            'endTime' => $endTime,//查询话单的结束时间
            'offset' => $offset,//查询话单的结束时间
            'ts' => $ts//呼叫时间
        ];
        $param['sign'] = $this->getSign($param);
        $data = json_encode($param);
        $url = 'http://clickcall.zthltx.com/api/v1.0/pullFeeList';
        $curlData = [
            'url' => $url,
            'ispost' => 1,
            'params' => $data,
            'header' => $this->headers,
            'resolve' => ['clickcall.zthltx.com:80:120.233.31.252'],
        ];
        $res = $this->createService("Common:Request.CommonRequest")->curlRequest($curlData);
        $res = json_decode($res, true);
        if ($res['code'] == 100000) {
            return ['code' => 200, 'msg' => $res['msg'], 'feeNums' => $res['feeNums'], 'data' => $res['data']];
        } else {
            return ['code' => 400, 'msg' => '请重试(' . json_encode($res, 320) . ')'];
        }

/**
     * @desc curl request请求
     * @param array $arguments
     * @return bool|string
     * @internal param 请求的url $url
     * @internal param int|post为1 $ispost
     * @internal param array|参数 $params
     * @internal param string|请求的头部数据 $header
     * @internal param string|请求的cookie数据 $cookie
     * @internal param bool|请求数据错误是否返回获取的数据 $source
     *
     */
    public function curlRequest($arguments = [])
    {
        $url = $arguments['url'];
        $ispost = isset($arguments['ispost']) ? $arguments['ispost'] : 0;
        $params = isset($arguments['params']) ? $arguments['params'] : array();
        $header = isset($arguments['header']) ? $arguments['header'] : "";

        $cookie = isset($arguments['cookie']) ? $arguments['cookie'] : "";
        $source = isset($arguments['source']) ? $arguments['source'] : true;
        $resolve = array_get($arguments, 'resolve');
        $timeout = array_get($arguments, 'timeout', 5);
        $connectTimeout = array_get($arguments, 'connectTimeout', 5);
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 对认证证书来源的检查
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
        curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); //设置cURL允许执行的最长秒数 30s
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $connectTimeout); // 在发起连接前等待的时间,如果设置为0,则无限等待。
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header); // 设置请求头部header数据

        // post and 参数
        if ($ispost) {
            curl_setopt($ch, CURLOPT_POST, true); // 是否使用post方式请求
            curl_setopt($ch, CURLOPT_POSTFIELDS, $params); // post 请求数据
            curl_setopt($ch, CURLOPT_URL, $url);
        } else {
            if ($params) {
                if (is_array($params)) {
                    $params = http_build_query($params);
                }
                curl_setopt($ch, CURLOPT_URL, $url . '?' . $params);
            } else {
                curl_setopt($ch, CURLOPT_URL, $url);
            }
        }
        // 设置cookie
        if ($cookie) {
            curl_setopt($ch, CURLOPT_COOKIE, $cookie);
        }

        if ($resolve) {
            curl_setopt($ch, CURLOPT_RESOLVE, $resolve);
        }
        //抓取URL并把它传递给浏览器
        $result = curl_exec($ch);
        // 为false 说明curl错误
        if ($result === false) {
            $result = 'ERROR(CURL): [' . curl_errno($ch) . ']' . curl_error($ch);
        }

        //获取执行后的 http 状态码
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        if ($httpCode != 200 && !$source) { // 非200说明异常
            $result = false;
        }

        curl_close($ch); // 关闭cURL资源,并且释放系统资源
        return $result;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值