官方文档:https://guzzle-cn.readthedocs.io/zh_CN/latest/index.html
github: https://github.com/guzzle/guzzle

安装

composer require guzzlehttp/guzzle

自己封装了一个简单的类,用来get post

<?php
/**
 * Created by PhpStorm.
 * Date: 2019/4/7
 * Time: 12:01
 */
namespace App\Services;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;

class HttpService{

    protected $client;
    protected $error;

    public $url;
    public $request_data = [];
    public $quest_method = 'GET';

    public function __construct()
    {
        $this->client = new Client([
            'timeout'   =>  3.0
        ]);
    }

    //设置URL
    public function setUrl(string $url = ''){
        $this->url = $url;
        return $this;
    }
    //设置访问方法
    public function setMthod(string $method = ''){
        $this->quest_method = $method;
        return $this;
    }
    //设置请求变量
    public function setRequestData(array $request_data = []){
        $this->request_data = $request_data;
        return $this;
    }

    //获取get请求结果
    protected function _request(){
        switch ($this->quest_method){
            case 'GET':
                if ($this->request_data){
                    $this->url = $this->url .'?'. http_build_query($this->request_data);
                    $this->request_data = [];
                }
                break;
            default:
                break;
        }
        $res = [];
        try {
            $res = $this->client->request($this->quest_method,$this->url,$this->request_data);
        } catch (RequestException $e) {
            //echo $e->getRequest();
            if ($e->hasResponse()) {
//                $res = $e->getResponse();
                return false;
            }
        }
        return $res;
    }

    //返回结果
    public function getResult(){

        $response = $this->_request();
        if ($response && $response->getStatusCode() == '200'){
            $content = $response->getBody()->getContents();
            $res = is_null(json_encode($content)) ? $content : json_decode($content,true);
            return $res;
        } else{
            return false;
        }
    }

}

用法

<?php
use App\Service\HttpService;
$httpservice = new HttpService();
$param = [
    'appid'   =>   '1111',
    'page'    =>   '1'
];
$res = $httpservice->setUrl('url')
            ->setMthod('GET')->setRequestData($param)->getResult();
var_dump($res);

php使用Carbon获取2个日期之间的日期

<?php use Carbon\CarbonPeriod; $period = CarbonPeriod::create('2018-06-14', '2018-06-20'); // Iterate over the period fore...

阅读全文

php 解决超卖的几种方案(redis锁、mysql悲观锁)

1.创建商品和订单表模拟商品交易操作 fa_goods商品表,stock商品库存,test_order=订单表 2.添加一个测试商品数据(商品数量为150个) 测试并发购买的方法(gol...

阅读全文

centos8 yum安装php7.3

执行命令 $ yum install epel-release $ rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm $ dnf install -y https://rpms...

阅读全文

欢迎留言