php curl 请求携带cookie


//定义存储cookie文件位置
protected $filename = 'dirname(__FILE__).'/cookie.txt''

/**
* 请求三方接口
*
* @param string $url  接口链接
* @param string $method  请求方式 get/post
* @param array $header  请求头
* @param array $param   请求参数
* @param bool $cookie 是否携带cookie
* @param string $cookie_file cookie文件位置
* @return bool|string
*/
    public function curl($url = '', $method = 'get',$header = [],$param = [],$cookie=false,$cookie_file='')
    {
        $val = strtolower($method) == 'get' ? 0 : 1;
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, $val);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        //设置为不是https也可以访问
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

        //设置header头
        if ( !empty($header) ) {
            curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        }
        //设置post的数据包,即传参
        if(!empty($param) && $val == 1){
            curl_setopt($ch, CURLOPT_POSTFIELDS, $param);
        }
        //是否需要设置cookie
        if($cookie){
            //携带cookie
            curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
        }
        //打印请求头
        $header_info = curl_getinfo($ch);
        //dd($header_info);
        $result = curl_exec($ch);
        curl_close($ch);
        return $result;
    }

    //请求第三方登录接口
    public function login(){
        //创建文件使文件可写
        if(!file_exists($this->filename)) {
            $myfile = fopen($this->filename, "w");
            fclose($myfile);
        }
        //登录的接口
        $url = '';
        //请求头
        $header = array(
          'Accept: application/json, text/plain, */*',
          'Accept-Language: zh-CN,zh;q=0.9',
          'Cache-Control: no-cache',
          'Connection: keep-alive',
          'Content-Type: application/json;charset=UTF-8',
        );
        //'Content-Type: application/json;charset=UTF-8' 如果是表单形式 Content-Type: application/x-www-form-urlencoded; charset=UTF-8
        //请求参数
        $params = [
        'username' => '',
        'password' => '',
        ];
        //由于是json格式
        $param = json_encode($params,JSON_UNESCAPED_UNICODE);
        $curl = curl_init();
        //设置表头
        curl_setopt($curl,CURLOPT_HTTPHEADER,$header);
        curl_setopt($curl, CURLOPT_URL, $url);
         // 设置为POST请求
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);
        //传送的数据
        curl_setopt($curl, CURLOPT_POSTFIELDS, $param);
        //获取cookie并存储
        curl_setopt($curl,CURLOPT_COOKIEJAR,$this->filename);
        $result=curl_exec($curl);
    }
    //调用
    public function t(){
        $header = array(
        'Accept: application/json, text/plain, */*',
        'Accept-Language: zh-CN,zh;q=0.9',
        'Cache-Control: no-cache',
        'Connection: keep-alive',
        'Content-Type: application/json;charset=UTF-8',
        'Pragma: no-cache',
        'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'
        );
        //请求参数
        $params = [];
        $param = json_encode($params,JSON_UNESCAPED_UNICODE);
        $this->curl($url,'post',$header,$param,true,$this->filename);
    }
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!