美文网首页
PHP curl使用

PHP curl使用

作者: 懒人程序猿 | 来源:发表于2020-06-08 01:24 被阅读0次
curl代码
<?php

/**
 * Class CURL
 * @desc 使用curl模拟heep request get、post、put、delete请求
 * @author wangxuemin
 */
class CURL
{
    private static $headerArray = array(
        "Content-type:application/json;charset='utf-8'", // MIME类型、字符集
        "Accept:application/json", // MIME类型
        "Accept-Encoding:gzip", // 需要服务端支持gzip压缩,许多情形下这可以减少5到10倍的下载时间。
        "Authorization:'values'" // 授权信息
    );

    public static function get($url = '', $data = [])
    {
        $params = http_build_query($data);
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url . '?' . $params);
        curl_setopt($curl, CURLOPT_HTTPHEADER, self::$headerArray);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($curl, CURLOPT_HEADER,false);
        curl_setopt($curl, CURLOPT_TIMEOUT, 10);
        curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        $output = curl_exec($curl);
        curl_close($curl);
        return json_decode(gzdecode($output),true); // gzdecode gzip解码
    }

    public static function put($url = '', $data = [])
    {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_HTTPHEADER, self::$headerArray);
        curl_setopt($curl, CURLOPT_CUSTOMREQUEST,"PUT");
        curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
        curl_setopt($curl, CURLOPT_HEADER,false);
        curl_setopt($curl, CURLOPT_TIMEOUT, 10);
        curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        $output = curl_exec($curl);
        curl_close($curl);
        return json_decode(gzdecode($output),true);
    }

    public static function post($url = '', $data = [])
    {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_HTTPHEADER, self::$headerArray);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,false);
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
        curl_setopt($curl, CURLOPT_HEADER,false);
        curl_setopt($curl, CURLOPT_TIMEOUT, 10);
        curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        $output = curl_exec($curl);
        curl_close($curl);
        return json_decode(gzdecode($output),true);
    }

    public static function delete($url = '', $data = [])
    {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_HTTPHEADER, self::$headerArray);
        curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE");
        curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
        curl_setopt($curl, CURLOPT_HEADER,false);
        curl_setopt($curl, CURLOPT_TIMEOUT, 10);
        curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        $output = curl_exec($curl);
        curl_close($curl);
        return json_decode(gzdecode($output),true);
    }

}
使用方法
// 模拟请求
$url = "http://www.yaf.com/index/curl";
var_dump(CURL::get($url, array('id' => 10, 'method' => 'get')));
echo '<br />';
var_dump(CURL::post($url, array('id' => 11, 'method' => 'post')));
echo '<br />';
var_dump(CURL::put($url, array('id' => 12, 'method' => 'put')));
echo '<br />';
var_dump(CURL::delete($url, array('id' => 13, 'method' => 'delete')));
接收处理方法
if($_SERVER['REQUEST_METHOD'] !== 'GET') {
    $content = file_get_contents('php://input');
    $data = (array)json_decode($content, true);
    echo json_encode(array('method' => $_SERVER['REQUEST_METHOD'], 'data' => $data));
} else {
    echo json_encode(array('method' => $_REQUEST['method'], 'id' => $_REQUEST['id']));
    exit;
}
处理结果
array(2) { ["method"]=> string(3) "get" ["id"]=> string(2) "10" }
array(2) { ["method"]=> string(4) "POST" ["data"]=> array(2) { ["id"]=> int(11) ["method"]=> string(4) "post" } }
array(2) { ["method"]=> string(3) "PUT" ["data"]=> array(2) { ["id"]=> int(12) ["method"]=> string(3) "put" } }
array(2) { ["method"]=> string(6) "DELETE" ["data"]=> array(2) { ["id"]=> int(13) ["method"]=> string(6) "delete" } }

相关文章

网友评论

      本文标题:PHP curl使用

      本文链接:https://www.haomeiwen.com/subject/gfuktktx.html