سیرمونتی / shttp
file_get_contents函数的包装类,用于简化HTTP和HTTPS请求
Requires
- php: >=7.4
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.59
- phpstan/phpstan: ^1.11
README
围绕file_get_contents函数的静态版本rapper,用于简化HTTP和HTTPS连接
描述
file_get_contents函数的包装类。这个类不是用来与功能齐全的网络框架(如Guzzle或Swoole)竞争,而是提供一个简单方便的解决方案来使用网络服务或访问网络资源。
这个类是simpleHTTP的静态版本,这意味着不需要创建对象,可以直接调用方法。
安装
通过composer
composer require sirmonti/shttp
这个类没有外部依赖,这意味着您不需要进行完整安装,只需将SHTTP.php文件下载到您的项目文件夹中即可。
功能
- 轻量级
- 非常简单的接口
- 您可以禁用证书验证,允许具有自签名或已过期的证书的网站
- 在HTTPS连接中,检索远程的证书链
- 支持证书认证。您可以提供您的证书以对远程站点进行认证
- 可配置的异常级别。您可以禁用异常,只在网络错误上引发异常,或者也在HTTP错误上引发异常
- 响应以PSR7格式。此功能需要安装外部包
基本用法
这只是一个简要的解释,文件SHTTP.md提供了更详尽的方法参考。
完整文档可以在这里找到Here.
有四个全局参数:异常级别、证书验证标志、额外HTTP标头和证书认证。
证书验证标志通过“verifCERT”布尔属性设置,异常级别通过setExceptionLevel()方法设置,额外HTTP标头通过setExtraHeaders()方法设置,证书认证通过setAuthCert()方法设置。
证书验证是一个布尔标志,用于启用或禁用在HTTPS连接上对远程证书的验证。如果启用验证,如果远程站点有损坏的证书(已过期、自动签名或属于另一个域),连接将被终止并引发错误。如果禁用,错误将被忽略,连接将正常执行。
有三个异常级别
- 0:禁用异常。错误仅设置状态码响应。
- 1:仅在网络错误上引发异常。HTTP错误将报告为状态码。
- 2:在任何错误上引发异常。
默认值是异常级别1和证书验证启用。
支持的方法是:GET、POST、PUT、HEAD、DELETE和 这里,使用此类的最基本示例 这里,我们修改证书验证和异常级别 这个库可以返回PSR7格式的响应,但需要安装第三方库。目前,支持HttpSoft、Nyholm、Guzzle、Laminas-diactoros和Slim。SHTTP会检测已安装的库,如果没有安装任何库,将抛出错误。 PSR7响应非常有用,因为主要的PHP框架都使用这种格式。 获取PSR7响应的示例 更多示例在示例文件夹中。 最简单的用法是直接调用请求 如您所见,该对象通过提供URL来执行直接请求。 这里,一个配置异常和证书接受示例 这里,一个带有JSON编码体的POST请求 这里,一个以图片作为数据体的POST请求 但是,如果你需要添加一个认证头怎么办? 但是,如果我们只在特定请求中需要额外的头呢? 从这个类发出的请求使用“SHTTP/7.0”作为用户代理。您可以设置自己的用户代理。 这里,一个PUT请求示例 但是,我如何获取响应头和结果状态? 此代码将生成以下输出 这个库遵循MIT授权协议 SHTTP::get('https://www.example.com/');
printf("Response data:\n%s\n",$resp);
// Disable certificate validation
SHTTP::verifCERT=false;
// Set exception level to 2
SHTTP::setExceptionLevel(2);
// All subsequent requests will operate with this parameters
$resp=SHTTP::get('https://www.examples.com/');
SHTTP::get('https://www.example.com/');
$resp=SHTTP::PSRResponse();
示例
$resp1=SHTTP::get('https://www.example.com/data1.txt');
$resp2=SHTTP::get('https://www.example.com/data2.json');
// Exception level 2 (exception on network or HTTP errors)
SHTTP::setExceptionLeve(2);
// Certificate validation disabled (Will accept any certificate)
SHTTP::verifCERT=false;
$data=[
'field1'=>'Data to send in field1',
'field2'=>'Data to send in field2'
];
// Execute a POST request sending the content of the $data variable
$resp=SHTTP::post('https://www.example.com/sendpoint',$data);
// Default exception level is 1, which means exceptions will be fired
// only on network errors
$data=[
'field1'=>'Data to send in field1',
'field2'=>'Data to send in field2'
];
$resp=SHTTP::postJSON('https://www.example.com/jsonentrypoint',$data);
$data=file_get_contents('exampleimage.jpg');
SHTTP::postRAW('https://www.example.com/imagenentrypoint','image/jpeg',$data);
// Create the authentication header
$headers=[
'Authorization: Bearer AuthenticationToken'
];
// Configure the default headers to send
SHTTP::setExtraHeaders($headers);
$data=[
'field1'=>'Data to send in field1',
'field2'=>'Data to send in field2'
];
$resp=SHTTP::post('https://www.example.com/sendpoint',$data);
$headers=[
'Authorization: Bearer AuthenticationToken'
];
// This header will be used by all subsequent requests
SHTTP::setExtraHeaders($headers);
$data=[
'field1'=>'Data to send in field1',
'field2'=>'Data to send in field2'
];
// Add an extra header to this request
$resp=SHTTP::post('https://www.example.com/sendpoint',$data,['X-Extra-Header: Data']);
$headers=[
'Authorization: Bearer AuthenticationToken',
'User-Agent: MyOwnUserAgent/1.0'
];
SHTTP::setExtraHeaders($headers);
$data=[
'field1'=>'Data to send in field1',
'field2'=>'Data to send in field2'
];
$resp=SHTTP::post('https://www.example.com/sendpoint',$data);
$headers=[
'Authorization: Bearer AuthenticationToken',
'User-Agent: MyOwnUserAgent/1.0'
];
SHTTP::setExtraHeaders($headers);
$data=[
'field1'=>'Data to send in field1',
'field2'=>'Data to send in field2'
];
// Example PUT with body in JSON format
$resp=SHTTP::putJSON('https://www.example.com/sendpoint',$data);
$resp=SHTTP::get('https://www.example.com/');
printf("HTTP/%s %d %s\n",$http->protocolVersion(),$http->respCode(),$http->respStatus());
printf("Response mime type: %s\n",$http->respMIME());
HTTP/1.1 200 OK
Response mime type: text/html; charset=UTF-8
授权协议