• Linux
  • apache
  • centos
  • Git版本管理
  • Linux基本命令
  • linux配置与优化
  • Nginx
  • PHP
  • Redis
  • Supervisor
  • Swoole
  • windows
  • THINKPHP
  • 开发者手册
  • Chat GPT / Open Ai
  • guzzlehttp请求封装

    全屏阅读
  • 基本信息
  • 作者:
  • 作者已发布:925篇文章
  • 发布时间:2023年01月13日 17:26:58
  • 所属分类:PHP+MySql, PHP原生源码
  • 阅读次数:498次阅读
  • 标签:
  • /**
         * 发送请求
         * https://guzzle-cn.readthedocs.io/zh_CN/latest/quickstart.html
         *
         * @param string $url
         * @param array $params
         * @param string $method
         * @param array $configs
         * @param string $contentType
         * @return array
         */
        public static function request(string $url, array $params = [], string $method = 'POST', array $configs = [], string $contentType='form_params')
        {
            $configs['timeout'] = array_get($configs, 'timeout', 5);
            $client = new Client($configs);
            $params = strtoupper($method) == 'GET' ? ['query' => $params] : [$contentType => $params];
            Log::info("httpRequest send", ['url' => $url, 'params' => $params, 'method' => $method, 'configs' => $configs]);
    
            try {
                $request = $client->request($method, $url, $params);
            } catch (RequestException $e) {
                $errorCode = $e->getCode();
                $errorMessage = $e->getMessage();
    
                Log::info("httpRequest response error:", ['url' => $url, 'params' => $params, 'method' => $method,
                    'configs' => $configs, 'errorCode' => $errorCode, 'errorMessage' => $errorMessage]);
    
                return [
                    'success' => false,
                    'errorCode' => $errorCode,
                    'errorMessage' => $errorMessage,
                ];
            }
    
            $httpCode = $request->getStatusCode();
            $return   = $request->getBody()->getContents();
            $response = json_decode($return, true);
            $success  = $httpCode == 200 ? 'success' : 'error';
    
            Log::info("httpRequest response $success:", ['url' => $url, 'params' => $params, 'method' => $method,
                'configs' => $configs, 'httpCode' => $httpCode, 'response' => $response]);
    
            if($httpCode != 200) {
                return [
                    'success' => false,
                    'errorCode' => $httpCode,
                    'errorMessage' => '',
                ];
            }
    
            return [
                'success' => true,
                'data' => $response
            ];
        }

    顶一下
    (0)
    100%
    订阅 回复
    踩一下
    (0)
    100%
    » 郑重声明:本文由mpxq168发布,所有内容仅代表个人观点。版权归恒富网mpxq168共有,欢迎转载, 但未经作者同意必须保留此段声明,并给出文章连接,否则保留追究法律责任的权利! 如果本文侵犯了您的权益,请留言。
  • 【上一篇】
  • 【下一篇】
  • 目前有 0 条留言 其中:访客:0 条, 博主:0 条

    给我留言

    您必须 [ 登录 ] 才能发表留言!