eee
This commit is contained in:
+105
-191
@@ -25,35 +25,117 @@ abstract class ClientAbstracts implements IClient
|
|||||||
const string HEAD = 'head';
|
const string HEAD = 'head';
|
||||||
const string PUT = 'put';
|
const string PUT = 'put';
|
||||||
|
|
||||||
private string $host = '';
|
public string $host = '' {
|
||||||
private array $header = [];
|
get {
|
||||||
private int $timeout = 0;
|
return $this->host;
|
||||||
private string $method = 'get';
|
}
|
||||||
private bool $isSSL = FALSE;
|
}
|
||||||
private string $agent = '';
|
protected array $header = [] {
|
||||||
private string $ssl_cert_file = '';
|
&get {
|
||||||
private string $ssl_key_file = '';
|
return $this->header;
|
||||||
private string $ca = '';
|
}
|
||||||
|
}
|
||||||
|
protected int $timeout = 0 {
|
||||||
|
get {
|
||||||
|
return $this->timeout;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
protected string $method = 'get' {
|
||||||
|
get {
|
||||||
|
return $this->method;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
protected bool $isSSL = FALSE {
|
||||||
|
get {
|
||||||
|
return $this->isSSL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
protected string $agent = '' {
|
||||||
|
get {
|
||||||
|
return $this->agent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public string $ssl_cert_file = '' {
|
||||||
|
get {
|
||||||
|
return $this->ssl_cert_file;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public string $ssl_key_file = '' {
|
||||||
|
get {
|
||||||
|
return $this->ssl_key_file;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public string $ca = '' {
|
||||||
|
get {
|
||||||
|
return $this->ca;
|
||||||
|
}
|
||||||
|
}
|
||||||
private int $port = 80;
|
private int $port = 80;
|
||||||
protected int $num = 0;
|
protected int $num = 0;
|
||||||
private ?array $_responseHeader = [];
|
private ?array $_responseHeader = [] {
|
||||||
private int $statusCode = 200;
|
&get {
|
||||||
protected int $retryNum = 0;
|
return $this->_responseHeader;
|
||||||
protected int $retryTimeout = 0;
|
}
|
||||||
private bool $verifyPeer = TRUE;
|
}
|
||||||
private string $proxyHost = '';
|
public int $statusCode = 200 {
|
||||||
private int $proxyPort = 0;
|
get {
|
||||||
|
return $this->statusCode;
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
$this->statusCode = $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
protected int $retryNum = 0 {
|
||||||
|
get {
|
||||||
|
return $this->retryNum;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
protected int $retryTimeout = 0 {
|
||||||
|
get {
|
||||||
|
return $this->retryTimeout;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private bool $verifyPeer = TRUE {
|
||||||
|
get {
|
||||||
|
return $this->verifyPeer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public string $proxyHost = '' {
|
||||||
|
get {
|
||||||
|
return $this->proxyHost;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public int $proxyPort = 0 {
|
||||||
|
get {
|
||||||
|
return $this->proxyPort;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string|null
|
* @var string|null
|
||||||
*/
|
*/
|
||||||
protected ?string $body;
|
public ?string $body {
|
||||||
|
get {
|
||||||
|
return $this->body;
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
$this->body = $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private string|array|null $_data = NULL;
|
protected string|array|null $_data = NULL {
|
||||||
|
get {
|
||||||
|
return $this->_data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private int $connect_timeout = 1;
|
public int $connect_timeout = 1 {
|
||||||
|
get {
|
||||||
|
return $this->connect_timeout;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -73,24 +155,6 @@ abstract class ClientAbstracts implements IClient
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getProxyHost(): string
|
|
||||||
{
|
|
||||||
return $this->proxyHost;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getProxyPort(): string
|
|
||||||
{
|
|
||||||
return $this->proxyPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $proxy
|
* @param string $proxy
|
||||||
* @return ClientAbstracts
|
* @return ClientAbstracts
|
||||||
@@ -124,24 +188,6 @@ abstract class ClientAbstracts implements IClient
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
public function getRetryNum(): int
|
|
||||||
{
|
|
||||||
return $this->retryNum;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
public function getRetryTimeout(): int
|
|
||||||
{
|
|
||||||
return $this->retryTimeout;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param bool $bool
|
* @param bool $bool
|
||||||
* @return $this
|
* @return $this
|
||||||
@@ -153,24 +199,6 @@ abstract class ClientAbstracts implements IClient
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
public function getVerifyPeer(): bool
|
|
||||||
{
|
|
||||||
return $this->verifyPeer;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
public function getStatusCode(): int
|
|
||||||
{
|
|
||||||
return $this->statusCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
@@ -199,33 +227,6 @@ abstract class ClientAbstracts implements IClient
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param int $statusCode
|
|
||||||
*/
|
|
||||||
public function setStatusCode(int $statusCode): void
|
|
||||||
{
|
|
||||||
$this->statusCode = $statusCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string|null
|
|
||||||
*/
|
|
||||||
public function getBody(): string|null
|
|
||||||
{
|
|
||||||
return $this->body;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param ?string $body
|
|
||||||
*/
|
|
||||||
public function setBody(?string $body): void
|
|
||||||
{
|
|
||||||
$this->body = $body;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $host
|
* @param string $host
|
||||||
* @param int $port
|
* @param int $port
|
||||||
@@ -328,14 +329,6 @@ abstract class ClientAbstracts implements IClient
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getHost(): string
|
|
||||||
{
|
|
||||||
return $this->host;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return int
|
* @return int
|
||||||
*/
|
*/
|
||||||
@@ -345,7 +338,8 @@ abstract class ClientAbstracts implements IClient
|
|||||||
return $this->getPort();
|
return $this->getPort();
|
||||||
}
|
}
|
||||||
$port = 80;
|
$port = 80;
|
||||||
if ($this->isSSL()) $port = 443;
|
if ($this->isSSL)
|
||||||
|
$port = 443;
|
||||||
return $port;
|
return $port;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -360,14 +354,6 @@ abstract class ClientAbstracts implements IClient
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
public function getHeader(): array
|
|
||||||
{
|
|
||||||
return $this->header;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return mixed|null
|
* @return mixed|null
|
||||||
@@ -415,14 +401,6 @@ abstract class ClientAbstracts implements IClient
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
public function getTimeout(): int
|
|
||||||
{
|
|
||||||
return $this->timeout;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param int $value
|
* @param int $value
|
||||||
* @return ClientAbstracts
|
* @return ClientAbstracts
|
||||||
@@ -443,14 +421,6 @@ abstract class ClientAbstracts implements IClient
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getMethod(): string
|
|
||||||
{
|
|
||||||
return $this->method;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $value
|
* @param string $value
|
||||||
* @return static
|
* @return static
|
||||||
@@ -461,14 +431,6 @@ abstract class ClientAbstracts implements IClient
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
public function isSSL(): bool
|
|
||||||
{
|
|
||||||
return $this->isSSL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param bool $isSSL
|
* @param bool $isSSL
|
||||||
* @return ClientAbstracts
|
* @return ClientAbstracts
|
||||||
@@ -479,14 +441,6 @@ abstract class ClientAbstracts implements IClient
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getAgent(): string
|
|
||||||
{
|
|
||||||
return $this->agent;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $agent
|
* @param string $agent
|
||||||
* @return ClientAbstracts
|
* @return ClientAbstracts
|
||||||
@@ -498,14 +452,6 @@ abstract class ClientAbstracts implements IClient
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getSslCertFile(): string
|
|
||||||
{
|
|
||||||
return $this->ssl_cert_file;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $ssl_cert_file
|
* @param string $ssl_cert_file
|
||||||
* @return ClientAbstracts
|
* @return ClientAbstracts
|
||||||
@@ -516,14 +462,6 @@ abstract class ClientAbstracts implements IClient
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getSslKeyFile(): string
|
|
||||||
{
|
|
||||||
return $this->ssl_key_file;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $ssl_key_file
|
* @param string $ssl_key_file
|
||||||
* @return ClientAbstracts
|
* @return ClientAbstracts
|
||||||
@@ -534,14 +472,6 @@ abstract class ClientAbstracts implements IClient
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getCa(): string
|
|
||||||
{
|
|
||||||
return $this->ca;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $ssl_key_file
|
* @param string $ssl_key_file
|
||||||
* @return static
|
* @return static
|
||||||
@@ -557,7 +487,7 @@ abstract class ClientAbstracts implements IClient
|
|||||||
*/
|
*/
|
||||||
public function getPort(): int
|
public function getPort(): int
|
||||||
{
|
{
|
||||||
if ($this->isSSL()) {
|
if ($this->isSSL) {
|
||||||
return 443;
|
return 443;
|
||||||
}
|
}
|
||||||
if (empty($this->port)) {
|
if (empty($this->port)) {
|
||||||
@@ -577,14 +507,6 @@ abstract class ClientAbstracts implements IClient
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string|null
|
|
||||||
*/
|
|
||||||
public function getData(): ?string
|
|
||||||
{
|
|
||||||
return $this->_data;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string|null $data
|
* @param string|null $data
|
||||||
* @return ClientAbstracts
|
* @return ClientAbstracts
|
||||||
@@ -595,14 +517,6 @@ abstract class ClientAbstracts implements IClient
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
public function getConnectTimeout(): int
|
|
||||||
{
|
|
||||||
return $this->connect_timeout;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param int $connect_timeout
|
* @param int $connect_timeout
|
||||||
* @return ClientAbstracts
|
* @return ClientAbstracts
|
||||||
@@ -728,7 +642,7 @@ abstract class ClientAbstracts implements IClient
|
|||||||
*/
|
*/
|
||||||
protected function matchHost(string $string): array
|
protected function matchHost(string $string): array
|
||||||
{
|
{
|
||||||
return [$this->host, $this->isSSL(), $string];
|
return [$this->host, $this->isSSL, $string];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+14
-14
@@ -34,7 +34,7 @@ class CoroutineClient extends ClientAbstracts
|
|||||||
$path = '/' . $path;
|
$path = '/' . $path;
|
||||||
}
|
}
|
||||||
|
|
||||||
$host = $this->getHost();
|
$host = $this->host;
|
||||||
if (!preg_match('/(\d{1,3}\.){3}\d{1,3}/', $host)) {
|
if (!preg_match('/(\d{1,3}\.){3}\d{1,3}/', $host)) {
|
||||||
$this->withAddedHeader('Host', $host);
|
$this->withAddedHeader('Host', $host);
|
||||||
}
|
}
|
||||||
@@ -62,15 +62,15 @@ class CoroutineClient extends ClientAbstracts
|
|||||||
private function coroutine(string $url, array|string $data = []): void
|
private function coroutine(string $url, array|string $data = []): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$this->generate_client($this->getHost(), $this->isSSL());
|
$this->generate_client($this->host, $this->isSSL);
|
||||||
if ($this->client->statusCode < 0) {
|
if ($this->client->statusCode < 0) {
|
||||||
throw new Exception($this->client->errMsg);
|
throw new Exception($this->client->errMsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->execute($url, $data);
|
$this->execute($url, $data);
|
||||||
} catch (\Throwable $exception) {
|
} catch (\Throwable $exception) {
|
||||||
$this->setStatusCode(-1);
|
$this->statusCode = -1;
|
||||||
$this->setBody(json_encode(['code' => 500, 'message' => $exception->getMessage()]));
|
$this->body = json_encode(['code' => 500, 'message' => $exception->getMessage()]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,8 +86,8 @@ class CoroutineClient extends ClientAbstracts
|
|||||||
if (in_array($this->client->getStatusCode(), [502, 404])) {
|
if (in_array($this->client->getStatusCode(), [502, 404])) {
|
||||||
$this->retry($path, $data);
|
$this->retry($path, $data);
|
||||||
} else {
|
} else {
|
||||||
$this->setStatusCode($this->client->getStatusCode());
|
$this->statusCode = $this->client->getStatusCode();
|
||||||
$this->setBody($this->client->getBody());
|
$this->body = $this->client->getBody();
|
||||||
$this->setResponseHeader($this->client->headers);
|
$this->setResponseHeader($this->client->headers);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -105,8 +105,8 @@ class CoroutineClient extends ClientAbstracts
|
|||||||
|
|
||||||
$this->execute($path, $data);
|
$this->execute($path, $data);
|
||||||
} else {
|
} else {
|
||||||
$this->setStatusCode($this->client->statusCode);
|
$this->statusCode = $this->client->statusCode;
|
||||||
$this->setBody($this->client->errMsg);
|
$this->body = $this->client->errMsg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -116,17 +116,17 @@ class CoroutineClient extends ClientAbstracts
|
|||||||
*/
|
*/
|
||||||
private function generate_client(string $host, bool $isHttps): void
|
private function generate_client(string $host, bool $isHttps): void
|
||||||
{
|
{
|
||||||
if ($isHttps || $this->isSSL()) {
|
if ($isHttps || $this->isSSL) {
|
||||||
$this->client = new SwowClient($host, 443, true);
|
$this->client = new SwowClient($host, 443, true);
|
||||||
} else {
|
} else {
|
||||||
$this->client = new SwowClient($host, $this->getPort(), false);
|
$this->client = new SwowClient($host, $this->getPort(), false);
|
||||||
}
|
}
|
||||||
$this->client->set($this->settings());
|
$this->client->set($this->settings());
|
||||||
if (!empty($this->getAgent())) {
|
if (!empty($this->agent)) {
|
||||||
$this->withAddedHeader('User-Agent', $this->getAgent());
|
$this->withAddedHeader('User-Agent', $this->agent);
|
||||||
}
|
}
|
||||||
$this->client->setHeaders($this->getHeader());
|
$this->client->setHeaders($this->header);
|
||||||
$this->client->setMethod(strtoupper($this->getMethod()));
|
$this->client->setMethod(strtoupper($this->method));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -137,7 +137,7 @@ class CoroutineClient extends ClientAbstracts
|
|||||||
*/
|
*/
|
||||||
private function setParams(string $path, mixed $data): string
|
private function setParams(string $path, mixed $data): string
|
||||||
{
|
{
|
||||||
$content = $this->getData();
|
$content = $this->_data;
|
||||||
if (!empty($content)) {
|
if (!empty($content)) {
|
||||||
$this->client->setData($content);
|
$this->client->setData($content);
|
||||||
}
|
}
|
||||||
|
|||||||
+21
-21
@@ -44,15 +44,15 @@ class CurlClient extends ClientAbstracts
|
|||||||
*/
|
*/
|
||||||
private function getCurlHandler(string $path, string $method, $params): void
|
private function getCurlHandler(string $path, string $method, $params): void
|
||||||
{
|
{
|
||||||
$host = $this->isSSL() ? 'https://' . $this->getHost() : 'http://' . $this->getHost();
|
$host = $this->isSSL ? 'https://' . $this->host : 'http://' . $this->host;
|
||||||
if ($this->getPort() != 443 && $this->getPort() != 80) {
|
if ($this->getPort() != 443 && $this->getPort() != 80) {
|
||||||
$host .= ':' . $this->getPort();
|
$host .= ':' . $this->getPort();
|
||||||
}
|
}
|
||||||
$this->do(curl_init($host . $path), $host . $path, $method);
|
$this->do(curl_init($host . $path), $host . $path, $method);
|
||||||
if ($this->isSSL()) {
|
if ($this->isSSL) {
|
||||||
$this->curlHandlerSslSet();
|
$this->curlHandlerSslSet();
|
||||||
}
|
}
|
||||||
$contents = $this->getData();
|
$contents = $this->_data;
|
||||||
if (empty($params) && empty($contents)) {
|
if (empty($params) && empty($contents)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -75,14 +75,14 @@ class CurlClient extends ClientAbstracts
|
|||||||
*/
|
*/
|
||||||
private function curlHandlerSslSet(): void
|
private function curlHandlerSslSet(): void
|
||||||
{
|
{
|
||||||
if (!empty($this->getSslKeyFile()) && file_exists($this->getSslKeyFile())) {
|
if (!empty($this->ssl_key_file) && file_exists($this->ssl_key_file)) {
|
||||||
curl_setopt($this->client, CURLOPT_SSLKEY, $this->getSslKeyFile());
|
curl_setopt($this->client, CURLOPT_SSLKEY, $this->ssl_key_file);
|
||||||
}
|
}
|
||||||
if (!empty($this->getSslCertFile()) && file_exists($this->getSslCertFile())) {
|
if (!empty($this->ssl_cert_file) && file_exists($this->ssl_cert_file)) {
|
||||||
curl_setopt($this->client, CURLOPT_SSLCERT, $this->getSslCertFile());
|
curl_setopt($this->client, CURLOPT_SSLCERT, $this->ssl_cert_file);
|
||||||
}
|
}
|
||||||
if (!empty($this->getCa()) && file_exists($this->getCa())) {
|
if (!empty($this->ca) && file_exists($this->ca)) {
|
||||||
curl_setopt($this->client, CURLOPT_CAINFO, $this->getCa());
|
curl_setopt($this->client, CURLOPT_CAINFO, $this->ca);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -97,8 +97,8 @@ class CurlClient extends ClientAbstracts
|
|||||||
private function do(mixed $resource, string $path, string $method): void
|
private function do(mixed $resource, string $path, string $method): void
|
||||||
{
|
{
|
||||||
curl_setopt($resource, CURLOPT_URL, $path);
|
curl_setopt($resource, CURLOPT_URL, $path);
|
||||||
curl_setopt($resource, CURLOPT_TIMEOUT, $this->getTimeout()); // 超时设置
|
curl_setopt($resource, CURLOPT_TIMEOUT, $this->timeout); // 超时设置
|
||||||
curl_setopt($resource, CURLOPT_CONNECTTIMEOUT, $this->getConnectTimeout()); // 超时设置
|
curl_setopt($resource, CURLOPT_CONNECTTIMEOUT, $this->connect_timeout); // 超时设置
|
||||||
curl_setopt($resource, CURLOPT_HEADER, TRUE);
|
curl_setopt($resource, CURLOPT_HEADER, TRUE);
|
||||||
curl_setopt($resource, CURLOPT_FAILONERROR, TRUE);
|
curl_setopt($resource, CURLOPT_FAILONERROR, TRUE);
|
||||||
curl_setopt($resource, CURLOPT_HTTPHEADER, $this->parseHeaderMat());
|
curl_setopt($resource, CURLOPT_HTTPHEADER, $this->parseHeaderMat());
|
||||||
@@ -107,8 +107,8 @@ class CurlClient extends ClientAbstracts
|
|||||||
}
|
}
|
||||||
curl_setopt($resource, CURLOPT_FORBID_REUSE, FALSE);
|
curl_setopt($resource, CURLOPT_FORBID_REUSE, FALSE);
|
||||||
curl_setopt($resource, CURLOPT_FRESH_CONNECT, FALSE);
|
curl_setopt($resource, CURLOPT_FRESH_CONNECT, FALSE);
|
||||||
if (!empty($this->getAgent())) {
|
if (!empty($this->agent)) {
|
||||||
curl_setopt($resource, CURLOPT_USERAGENT, $this->getAgent());
|
curl_setopt($resource, CURLOPT_USERAGENT, $this->agent);
|
||||||
}
|
}
|
||||||
curl_setopt($resource, CURLOPT_NOBODY, FALSE);
|
curl_setopt($resource, CURLOPT_NOBODY, FALSE);
|
||||||
curl_setopt($resource, CURLOPT_RETURNTRANSFER, TRUE);//返回内容
|
curl_setopt($resource, CURLOPT_RETURNTRANSFER, TRUE);//返回内容
|
||||||
@@ -117,7 +117,7 @@ class CurlClient extends ClientAbstracts
|
|||||||
if ($method === self::POST || $method == self::UPLOAD) {
|
if ($method === self::POST || $method == self::UPLOAD) {
|
||||||
curl_setopt($resource, CURLOPT_POST, 1);
|
curl_setopt($resource, CURLOPT_POST, 1);
|
||||||
}
|
}
|
||||||
[$proxy, $port] = [$this->getProxyHost(), $this->getProxyPort()];
|
[$proxy, $port] = [$this->proxyHost, $this->proxyPort];
|
||||||
if (!empty($proxy) && $port > 0) {
|
if (!empty($proxy) && $port > 0) {
|
||||||
curl_setopt($resource, CURLOPT_PROXYPORT, $port);
|
curl_setopt($resource, CURLOPT_PROXYPORT, $port);
|
||||||
curl_setopt($resource, CURLOPT_PROXY, $proxy);
|
curl_setopt($resource, CURLOPT_PROXY, $proxy);
|
||||||
@@ -157,8 +157,8 @@ class CurlClient extends ClientAbstracts
|
|||||||
if ($output !== FALSE) {
|
if ($output !== FALSE) {
|
||||||
$this->explode($output);
|
$this->explode($output);
|
||||||
} else {
|
} else {
|
||||||
$this->setStatusCode(curl_errno($this->client));
|
$this->statusCode = curl_errno($this->client);
|
||||||
$this->setBody(curl_error($this->client));
|
$this->body = curl_error($this->client);
|
||||||
}
|
}
|
||||||
$this->close();
|
$this->close();
|
||||||
}
|
}
|
||||||
@@ -175,8 +175,8 @@ class CurlClient extends ClientAbstracts
|
|||||||
|
|
||||||
$this->execute();
|
$this->execute();
|
||||||
} else {
|
} else {
|
||||||
$this->setStatusCode(curl_errno($this->client));
|
$this->statusCode = curl_errno($this->client);
|
||||||
$this->setBody(curl_error($this->client));
|
$this->body = curl_error($this->client);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -207,8 +207,8 @@ class CurlClient extends ClientAbstracts
|
|||||||
if (in_array($statusCode, [502, 404])) {
|
if (in_array($statusCode, [502, 404])) {
|
||||||
$this->retry();
|
$this->retry();
|
||||||
} else {
|
} else {
|
||||||
$this->setStatusCode($statusCode);
|
$this->statusCode = $statusCode;
|
||||||
$this->setBody(substr($output, $headerSize));
|
$this->body = substr($output, $headerSize);
|
||||||
$this->setResponseHeader(explode("\r\n", $header));
|
$this->setResponseHeader(explode("\r\n", $header));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -220,7 +220,7 @@ class CurlClient extends ClientAbstracts
|
|||||||
private function parseHeaderMat(): array
|
private function parseHeaderMat(): array
|
||||||
{
|
{
|
||||||
$headers = [];
|
$headers = [];
|
||||||
foreach ($this->getHeader() as $key => $val) {
|
foreach ($this->header as $key => $val) {
|
||||||
$headers[$key] = $key . ': ' . $val;
|
$headers[$key] = $key . ': ' . $val;
|
||||||
}
|
}
|
||||||
return array_values($headers);
|
return array_values($headers);
|
||||||
|
|||||||
+3
-4
@@ -172,8 +172,7 @@ interface IClient
|
|||||||
public function withContentType(string $contentType): static;
|
public function withContentType(string $contentType): static;
|
||||||
|
|
||||||
|
|
||||||
/**
|
public null|string $body {
|
||||||
* @return mixed
|
get;
|
||||||
*/
|
}
|
||||||
public function getBody(): mixed;
|
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-9
@@ -11,16 +11,16 @@ trait TSwooleClient
|
|||||||
*/
|
*/
|
||||||
private function settings(): array
|
private function settings(): array
|
||||||
{
|
{
|
||||||
$sslCert = $this->getSslCertFile();
|
$sslCert = $this->ssl_cert_file;
|
||||||
$sslKey = $this->getSslKeyFile();
|
$sslKey = $this->ssl_key_file;
|
||||||
$sslCa = $this->getCa();
|
$sslCa = $this->ca;
|
||||||
|
|
||||||
$params = [];
|
$params = [];
|
||||||
if ($this->getConnectTimeout() > 0) {
|
if ($this->connect_timeout > 0) {
|
||||||
$params['timeout'] = $this->getConnectTimeout();
|
$params['timeout'] = $this->connect_timeout;
|
||||||
}
|
}
|
||||||
|
|
||||||
[$proxy, $port] = [$this->getProxyHost(), $this->getProxyPort()];
|
[$proxy, $port] = [$this->proxyHost, $this->proxyPort];
|
||||||
if (!empty($proxy) && $port > 0) {
|
if (!empty($proxy) && $port > 0) {
|
||||||
$params['http_proxy_host'] = $proxy;
|
$params['http_proxy_host'] = $proxy;
|
||||||
$params['http_proxy_port'] = $port;
|
$params['http_proxy_port'] = $port;
|
||||||
@@ -29,9 +29,9 @@ trait TSwooleClient
|
|||||||
return $params;
|
return $params;
|
||||||
}
|
}
|
||||||
|
|
||||||
$params['ssl_host_name'] = $this->getHost();
|
$params['ssl_host_name'] = $this->host;
|
||||||
$params['ssl_cert_file'] = $this->getSslCertFile();
|
$params['ssl_cert_file'] = $this->ssl_cert_file;
|
||||||
$params['ssl_key_file'] = $this->getSslKeyFile();
|
$params['ssl_key_file'] = $this->ssl_key_file;
|
||||||
$params['ssl_verify_peer'] = TRUE;
|
$params['ssl_verify_peer'] = TRUE;
|
||||||
$params['ssl_cafile'] = $sslCa;
|
$params['ssl_cafile'] = $sslCa;
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -9,7 +9,7 @@
|
|||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=8.4",
|
"php": ">=8.5",
|
||||||
"ext-json": "*",
|
"ext-json": "*",
|
||||||
"ext-swoole": "*"
|
"ext-swoole": "*"
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user