You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
1.9 KiB
PHP

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
declare(strict_types=1);
namespace App\Helper;
use GuzzleHttp\Client;
use Hyperf\Guzzle\HandlerStackFactory;
/**
* 请求处理公共类
*/
class Curl
{
/**
* 获取Guzzle客户端实例使用连接池
*
* @return Client
*/
protected static function getClient() : Client
{
$factory = new HandlerStackFactory();
$stack = $factory->create();
return make(Client::class, [
'config' => [
'handler' => $stack,
]
]);
}
/**
* 发送Get请求
*
* @param string $url
* @param array $headers
* @return array
* @throws \GuzzleHttp\Exception\GuzzleException
*/
public static function get(string $url, array $headers = []) : array
{
$client = self::getClient();
$options = ['timeout' => 2, 'verify' => false];
if (!empty($headers)) {
$options['headers'] = $headers;
}
$response = $client->get($url, $options);
if ($response->getStatusCode() === 200) {
return json_decode($response->getBody()->getContents(), true);
}
return [];
}
/**
* 发送POST请求application/x-www-form-urlencoded
*
* @param string $url
* @param array $data
* @param array $headers
* @return array
* @throws \GuzzleHttp\Exception\GuzzleException
*/
public static function post(string $url, array $data = [], array $headers = []) : array
{
$client = self::getClient();
$options = ['timeout' => 2, 'verify' => false, 'form_params' => $data];
if (!empty($headers)) {
$options['headers'] = $headers;
}
$response = $client->post($url, $options);
if ($response->getStatusCode() === 200) {
return json_decode($response->getBody()->getContents(), true);
}
return [];
}
}