官方文档: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使用生成器读取超大文件

<?php function getLines($file) { $f = fopen($file, 'r'); try { while ($line = fgets($f)) { yield $line; ...

阅读全文

php获取字符串里面的图片,xpath方式

代码 <?php $html = <<<str <html> <head> <title>123</title> </head> <body> <img src=&quo...

阅读全文

Thinkphp5 in查询结果按照in里面的顺序排

或许有人会注意过,但我以前真不知道 SQL: select * from table where id IN (3,6,9,1,2,5,8,7); 这样的情况取出来后,其实,id还是按1,2,3,4,5,6,7,8,9,排序...

阅读全文

欢迎留言