curl get,post, patch,delete请求封装

文章目录

      • 场景
      • 参考文档
      • 解决
        • DELETE
        • PATCH/PUT
        • POST请求
        • GET请求

场景

. 请求接口,这种场景太常见了 
. 总计一下 方便使用

参考文档

php.net curl

解决

DELETE

$data = http_build_query([
            'name' => 'PHP in Action',
            'price' => 10.9
        ]);

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "https://learn.carsonlius.vip/api/v1/delete");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-HTTP-Method-Override: DELETE'));
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        $ce = curl_exec($ch);
        // curl 异常
        if (curl_errno($ch)) {
            return [
                'success' => false,
                'status' => 1478,
                'msg' => curl_error($ch)
            ];
        }
        curl_close($ch);
        print_r($ce);
    } catch (\Exception $e) {
        // TODO  do something whatever you want
    }

PATCH/PUT

    try {
        $data = http_build_query([
            'name' => 'PHP in Action',
            'price' => 10.9
        ]);

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "https://learn.carsonlius.vip/api/v1/patch");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PATCH");
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-HTTP-Method-Override: PATCH'));
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        $ce = curl_exec($ch);
        // curl 异常
        if (curl_errno($ch)) {
            return [
                'success' => false,
                'status' => 1478,
                'msg' => curl_error($ch)
            ];
        }
        curl_close($ch);
        print_r($ce);
    } catch (\Exception $e) {
        // TODO  do something whatever you want
    }

POST请求

/**
 * 发送post请求
 * @param string $url
 * @param array $post_data
 * @return array|mixed
 */
function curlRequestForPost($url, $post_data)
{
    if (is_array($post_data)) {
        $post_data  = http_build_query($post_data);
    }

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

    // 20s 超时
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 20);
    curl_setopt($curl, CURLOPT_TIMEOUT, 20);

    //设置post方式提交
    curl_setopt($curl, CURLOPT_POST, 1);
    // post参数
    curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
    $list_stat = curl_exec($curl);

    // curl 出错
    if (curl_errno($curl)) {
        return [
            'success' => false,
            'msg' => curl_error($curl)
        ];
    }
    if (is_string($list_stat)) {
	    return json_decode($list_stat, true);
    }
    curl_close($curl);
    return $list_stat;
}

GET请求

. 这个是和post类似的
    /**
     * 发送get请求
     * @param string $url 请求的Url
     * @param array $url_data 请求参数
     * @return array|mixed
     */
    protected function curlRequestForGet($url, $url_data = [])
    {
        // 追加参数
        if ($url_data && is_array($url_data)) {
            $url_data = http_build_query($url_data);
            $url .= '?' . $url_data;
        }

        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_HEADER, false);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

        // 20s 超时
        curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 20);
        curl_setopt($curl, CURLOPT_TIMEOUT, 20);

        $list_stat = curl_exec($curl);

        // curl 出错
        if (curl_errno($curl)) {
            return [
                'success' => false,
                'msg' => curl_error($curl)
            ];
        }
        if (is_string($list_stat)) {
	    return json_decode($list_stat, true);
	    }
        curl_close($curl);
        return $list_stat;
    }

你可能感兴趣的:(php)