笔记:Curl 简单 post + get

日常开发中,用习惯了 guzzlehttp/guzzle 包,不得不说是真的好用,推荐大家使用。
命令:composer require guzzlehttp/guzzle 链接
然而最近在项目中却惊讶的发现,guzzle包是3.*版本,用起来不是很友好。只能自己简单的写一下post,get了。
附代码:

<?php


namespace App\Service;


class CurlService
{

    /**
     * post 数据
     * 
     * @param $url
     * @param $postData
     * @param int $timeout
     * @return mixed
     */
    public static function post($url, $postData, $timeout = 10)
    {
         $ch = curl_init($url);
         curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
         curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
         curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
         curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
         $data = curl_exec($ch);
         curl_close($ch);

         return json_decode($data, true);
    }

    /**
     * Post json 数据
     *
     * @param $url      |  url地址
     * @param $postData |  array
     * @param $timeout  |  int
     * @return mixed
     */
    public static function postJson($url, $postData, $timeout = 10) {
        $jsonStr = json_encode($postData, JSON_UNESCAPED_UNICODE);
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $headers = [
            'Content-Type: application/json',
            'Content-Length: ' . strlen($jsonStr),
        ];
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
        $data = curl_exec($ch);
        curl_close($ch);

        return json_decode($data, true);
    }

    /**
     * Get Url 数据
     *
     * @param $url
     * @param int $timeout
     * @param array $headers
     * @return bool|string
     */
    public static function get($url, $timeout = 10, $headers = [])
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        if ($headers) {
            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        }

        curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
        $output = curl_exec($ch);
        curl_close($ch);

        return $output;
    }

}

Get常用处理:

        //处理Get请求参数
        $params = [];
        $queryStr = http_build_query($params);
        //header的基本使用
        $headers[] = 'Content-Type: application/json';
        $headers[] = "Authorization: Basic " . base64_encode("$this->username:$this->password");
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 2
use Illuminate\Support\Facades\Http;
$url = "http://xxx.test/api/getTestPlay";
//      $response = Http::get($url);
$response = Http::get($url,[
  'sex'=>'男'
]);
$data = $response->json();

这个更简洁,不需要自己写
具体可以参考这个:Laravel 7 将内置 Zttp 类库

3年前 评论

@她来听我的演唱会 laravel Request自带实现的Request::create也很好用,只是项目特殊自己顺手写了写,就当复习一下基础了

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!