0
点赞
收藏
分享

微信扫一扫

PHP post请求方法和get请求方法

普通的post请求方法:

    public function sendPOSTRequest($url, $map_json)
    {
        $ch = curl_init();
        //设置选项,包括URL
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 信任任何证书
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); // 检查证书中是否设置域名
		
        //curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
        //curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $map_json);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            "Content-type: application/json; charset=UTF-8"
        ));
        $content = curl_exec($ch);
        if ($content === false) {
            echo 'Curl error: ' . curl_error($ch);
        }

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

    }

带有证书的post请求

    public function curlPost($url = '', $postData = '', $options = array(),$key,$cert)
    {
        if (is_array($postData)) {
            $postData = http_build_query($postData);
        }
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置cURL允许执行的最长秒数
        if (!empty($options)) {
            curl_setopt_array($ch, $options);
        }
        //https请求 不验证证书和host
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
        //设置header
		curl_setopt($ch, CURLOPT_HEADER, FALSE);
		//要求结果为字符串且输出到屏幕上
        //第一种方法,cert 与 key 分别属于两个.pem文件
        //默认格式为PEM,可以注释
        curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');
        // curl_setopt($ch,CURLOPT_SSLCERT,dirname(__FILE__)."/new_cert_1/apiclient_cert.pem");
        curl_setopt($ch,CURLOPT_SSLCERT,__DIR__ . '/../Config/apiclient_cert.pem');
        //默认格式为PEM,可以注释
        curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');
        // curl_setopt($ch,CURLOPT_SSLKEY,dirname(__FILE__)."/new_cert_1/apiclient_key.pem");
        curl_setopt($ch,CURLOPT_SSLKEY,__DIR__ . '/../Config/apiclient_key.pem');
        //第二种方式,两个文件合成一个.pem文件
//        curl_setopt($ch,CURLOPT_SSLCERT,getcwd().'/all.pem');
        $data = curl_exec($ch);
        curl_close($ch);
        return $data;
    }

两种方法均可实现post请求,注意带有证书请求的需要填写正确的 证书绝对路径即可。

举报

相关推荐

0 条评论