PHP Guzzle包 用法

总结: 
1.GUZZLE包最终还是用的curl的curl_exec和curl_multi_exec去请求,可以添加自定义配置,这些配置最终还是会对应到 curl_setopt_array($easy->handle, $conf); 设置 
2.还有一个就是可以做一些请求前或者请求返回后的中间件。介入请求的过程中处理$stack = new HandlerStack(); push,handler进去 
//使用默认配置去构建客户端
        $client = new Client();

        //设置CURL,使用去构建客户端
        $client = new \GuzzleHttp\Client([
            'curl' => [
                CURLOPT_SSL_VERIFYPEER => false,
                CURLOPT_SSL_VERIFYHOST => 1,
            ]
        ]);

        //代理设置
        $proxy = [
            //http域名代理
            'http' => config('app.fileserver_proxy') . ':' . config('app.fileserver_port'), // Use this proxy with "http"
            //https域名代理
            'https' => config('app.fileserver_proxy') . ':' . config('app.fileserver_port'), // Use this proxy with "https",
            //不需要代理的域名
            'no' => ''

        ];

        $response = $client->request('GET','https://www.baidu.com', [
            'proxy' => $proxy
                ]);


        //异步请求,要用wait才能返回
        $promise = $client->requestAsync('GET', 'https://www.baidu.com');
        $promise = $promise->then(
            function (ResponseInterface $res) {
                dd($res->getBody());
                echo $res->getStatusCode() . "\n";
            },
            function (RequestException $e) {
                dd($e);
                echo $e->getMessage() . "\n";
                echo $e->getRequest()->getMethod();
            }
        )->wait();
        dd($promise);


        function add_response_header($header, $value)
        {
                return function (callable $handler) use ($header, $value) {
                    return function (
                        RequestInterface $request,
                        array $options
                    ) use ($handler, $header, $value) {
                        $promise = $handler($request, $options)
                return $promise->then(
                    function (ResponseInterface $response) use ($header, $value) {
                        return $response->withHeader($header, $value);
                    }
                );
            }
        };
        }

        $stack = new HandlerStack();
        $stack->setHandler(new CurlHandler());
        $stack->push(add_response_header('X-Foo', 'bar'));
        $client = new Client(['handler' => $stack]);

 

发布了64 篇原创文章 · 获赞 15 · 访问量 5万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览