一个常用的通过CURL发送HTTP请求的函数 ThinkPHP

来源:互联网 发布:电子签章软件下载 编辑:程序博客网 时间:2024/06/03 17:24
在这里我也来分享一下我正在系统里用到的一个通过cURL来发送HTTP请求的函数。
    /**     * 发送HTTP请求方法     * @param  string $url    请求URL     * @param  array  $params 请求参数     * @param  string $method 请求方法GET/POST     * @return array  $data   响应数据     */    function http($url, $params, $method = 'GET', $header = array(), $multi = false){        $opts = array(                CURLOPT_TIMEOUT        => 30,                CURLOPT_RETURNTRANSFER => 1,                CURLOPT_SSL_VERIFYPEER => false,                CURLOPT_SSL_VERIFYHOST => false,                CURLOPT_HTTPHEADER     => $header        );        /* 根据请求类型设置特定参数 */        switch(strtoupper($method)){            case 'GET':                $opts[CURLOPT_URL] = $url . '?' . http_build_query($params);                break;            case 'POST':                //判断是否传输文件                $params = $multi ? $params : http_build_query($params);                $opts[CURLOPT_URL] = $url;                $opts[CURLOPT_POST] = 1;                $opts[CURLOPT_POSTFIELDS] = $params;                break;            default:                throw new Exception('不支持的请求方式!');        }        /* 初始化并执行curl请求 */        $ch = curl_init();        curl_setopt_array($ch, $opts);        $data  = curl_exec($ch);        $error = curl_error($ch);        curl_close($ch);        if($error) throw new Exception('请求发生错误:' . $error);        return  $data;    }
调用方法:
    //定义一个要发送的目标URL;    $url = "https://www.xxx.com";    //定义传递的参数数组;    $data['aaa']='aaaaa';    $data['bbb']='bbbb';    //定义返回值接收变量;    $httpstr = http($url, $data, 'POST', array("Content-type: text/html; charset=utf-8"));

温馨提示:如果客户端服务端都是php,由于php目前只能接收Content-Type: application/x-www-form-urlencoded提交的数据,也就是post表单提交的数据所以需要自行更改Content-Type的类型

这里还有几种PHP获取POST数据的方法汇总:http://www.jb51.net/article/61690.htm



原创粉丝点击