php curl模拟常用的请求

<?php
namespace servers\serveridcims\controller\client;
/**
 * 客户端操作服务器类
 */

class serveridcims
{
   /**
     * 公共请求接口函数
     * @param $url
     * @param $data
     * @param string $method
     * @param string $type
     * @param array $headers
     * @return bool|string
     */

    public function curlpost($url,$data,$method = 'GET',$type='json',$headers=[])
    {

        try{
            //初始化
            $ch = curl_init();
            $headers[] =  "cache-control: no-cache";
            $contentType = [
                'form-data' => 'Content-Type: multipart/form-data',
                'json'      => 'Content-Type: application/json',
            ];
            if($method == 'GET'){
                if($data){
                    $querystring = http_build_query($data);
                    $url = $url.'?'.$querystring;
                }
            }

            $headers[] = $contentType[$type];

            // 请求头,可以传数组
            curl_setopt($ch, CURLOPT_URL,$url);
            curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);
            curl_setopt($ch, CURLOPT_HEADER, true);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);         // 执行后不直接打印出来
            curl_setopt($ch, CURLOPT_NOBODY,false);

            curl_setopt($ch, CURLOPT_SSLVERSION, 3);
            curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, 'SSLv3');

            if($method == 'POST'){
                if($type=='json'){
                    $data = json_encode($data);
                }

                curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'POST');     // 请求方式
                curl_setopt($ch, CURLOPT_POST, true);               // post提交
                curl_setopt($ch, CURLOPT_POSTFIELDS,$data);                 // post的变量
            }
            if($method == 'PUT'){
                if($type=='json'){
                    $data = json_encode($data);
                }

                curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "PUT");
                curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
            }
            if($method == 'DELETE'){
               if($type=='json'){
                   $data = json_encode($data);
               }
                curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
                curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
            }

            curl_setopt($ch, CURLOPT_TIMEOUT, 120);  // 最大执行时间
            curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);  // 最大执行时间
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 不从证书中检查SSL加密算法是否存在
            curl_setopt($ch, CURLOPT_SSLVERSION, 6);
            $content = curl_exec($ch); //执行并获取HTML文档内容
            $headerStr = curl_getinfo($ch,CURLINFO_HEADER_OUT);// 执行并获取头部内容
            list($headerinfo,$output)=explode("\r\n\r\n",$content,2);

            $err = curl_error($ch);

            if($err){
                return $this->failReturn('curl_errno:'.$err);
            }

            curl_close($ch); //释放curl句柄

            $response = json_decode($output, true);
            if (json_last_error() == JSON_ERROR_NONE) {
                $response['headerinfo'] = $headerinfo;
                return $response;
            } else {
                if (empty($output) || $output == 'Success') {
                    return $this->successReturn($output);
                }else{
                    if (!empty($output)){
                        return $this->successReturn($output);
                    }else{
                        return $this->failReturn($output);
                    }

                }
            }
        }catch (\Exception $e){
            return $this->failReturn('curl_errno:'.$err);
        }
    }

    /**
     * 返回成功
     */
    public function successReturn($data = [], $msg = "")
    {
        return [
            "result" => "success",
            "code" => 200,
            "msg" => $msg ? $msg : "Successful",
            "data" => $data,
        ];
    }

    /**
     * 返回失败
     */
    public function failReturn($msg = '', $code = 1, $data = [])
    {
        return [
            'result' => 'faild',
            'code' => $code,
            'msg' => $msg,
            'data' => $data,
        ];
    }


}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值