PHP的3种请求方式 GET POST 伪异步POST

/*
     * 发起POST网络提交
     * @params string $url : 网络地址
     * @params json $data : 发送的json格式数据
     */

    static public function https_post($url, $data) {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        if (!empty($data)) {
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($curl);
        curl_close($curl);
        return $output;
    }

    /*
     * 发起GET网络提交
     * @params string $url : 网络地址
     */

    static public function https_get($url) {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
        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, 60);
        if (curl_errno($curl)) {
            return 'Errno' . curl_error($curl);
        } else {
            $result = curl_exec($curl);
        }
        curl_close($curl);
        return $result;
    }

    /**
     * 异步post请求
     * @param type $host    域名 www.baidu.com
     * @param type $url     请求方法链接:/party.php/api/####
     * @param type $param   参数数组
     */
    static public function http_post_asynchronous_request($host = '', $url = '', $param = array()) {
        $host = isset($host) ? $host : 'www.baidu.com';
        $query = isset($param) ? http_build_query($param) : '';
        $port = 80;
        $errno = 0;
        $errstr = '';
        $timeout = 10;
        $fp = fsockopen($host, $port, $errno, $errstr, $timeout);
        $out = "POST " . $url . " HTTP/1.1\r\n";
        $out .= "host:" . $host . "\r\n";
        $out .= "content-length:" . strlen($query) . "\r\n";
        $out .= "content-type:application/x-www-form-urlencoded\r\n";
        $out .= "connection:close\r\n";

        $out .= $query;
        fputs($fp, $out);
        usleep(20000); //避免nginx服务器链接断开无法 报499 链接失效
        fclose($fp);
    }
    /**
	 * curl请求接口
	 * @param $url
	 * @param mixed $params
	 * @param string $method
	 * @param array $header ['Content-Type: application/json','token: xxxxx','...']
	 * @param int $need_exception_check 需要抛出异常检查
	 * @param int $timeout 最大1秒
	 * @return mixed
	 * @throws Exception
	 */
	function curlRequest($url, $params = [], $method = 'POST', $header = [], $need_exception_check = true, $timeout = 4) {
	    $opts = [
	        CURLOPT_TIMEOUT => $timeout,
	        CURLOPT_HTTPHEADER => $header,
	        CURLOPT_RETURNTRANSFER => true,//curl执行不直接输出在页面上(省去ob_clean)
	        CURLOPT_SSL_VERIFYPEER => false, //不做证书校验
	        CURLOPT_SSL_VERIFYHOST => false //不做证书校验
	    ];
	    /* 根据请求类型设置特定参数 */
	    switch (strtoupper($method)) {
	        case 'GET':
	            $opts[CURLOPT_URL] = $url . '?' . http_build_query($params);
	            break;
	        case 'POST':
	            $opts[CURLOPT_URL] = $url;
	            $opts[CURLOPT_POST] = 1;
	            $opts[CURLOPT_POSTFIELDS] = $params;
	            break;
	        case 'DELETE':
	            $opts[CURLOPT_URL] = $url;
	            $opts[CURLOPT_HTTPHEADER] = array("X-HTTP-Method-Override: DELETE");
	            $opts[CURLOPT_CUSTOMREQUEST] = 'DELETE';
	            $opts[CURLOPT_POSTFIELDS] = http_build_query($params);
	            break;
	        case 'PUT':
	            $opts[CURLOPT_URL] = $url;
	            $opts[CURLOPT_POST] = 0;
	            $opts[CURLOPT_CUSTOMREQUEST] = 'PUT';
	            $opts[CURLOPT_POSTFIELDS] = http_build_query($params);
	            break;
	        default:
	            throw new Exception('不支持的请求方式!');
	    }

	    $ch = curl_init();              //初始化curl
	    curl_setopt_array($ch, $opts);  //批量设置
	    $response = curl_exec($ch);     //发起请求
	    $error_msg = curl_error($ch);   //错误信息
	    curl_close($ch);                //关闭curl链接

	    //超时或请求失败
	    if ($error_msg && $need_exception_check) {
	        throw new Exception($error_msg);
	    }
	    $response = json_decode($response, true);
	    return $response;
	}

PHP的3种请求方式 GET POST 伪异步POST (引用自己的博文 - 转战CSDN)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值