sirmonti / simplehttp
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 函数的包装类,简化 HTTP 和 HTTPS 连接
描述
file_get_contents 函数的包装类。这个类并不旨在与功能齐全的网络框架(如 Guzzle 或 Swoole)竞争,而是为了提供一个简单便捷的解决方案,用于使用网络服务或访问网络资源
安装
通过 composer
composer require sirmonti/simplehttp
这个类没有外部依赖,这意味着您不需要进行完整安装,只需下载并将 simpleHTTP.php 文件放入您的项目文件夹即可。
功能
- 轻量级
- 非常简单的接口
- 您可以禁用证书验证,允许使用自签名或过期的证书的站点
- 在 HTTPS 连接中,检索远程的证书链
- 支持证书认证。您可以提供您的证书以对远程站点进行认证
- 可配置的异常级别。您可以选择禁用异常,仅在网络错误上引发异常,或者在 HTTP 错误上引发异常
- 以 PSR7 格式提供响应。此功能需要安装外部包
基本用法
这只是一个简要说明,文件 simpleHTTP.md 提供了更全面的方法参考。
完整文档可在 此处 找到。
您创建一个 simpleHTTP 类的对象。构造函数有两个参数,异常级别和远程证书验证。
这里我们创建了一个异常级别为 2 且禁用证书验证的对象
$http=new simpleHTTP(2,false);
证书验证是一个布尔标志,用于启用或禁用 HTTPS 连接上远程证书的验证。如果验证被启用,如果远程站点有一个伪造的证书(已过期、自签名或属于另一个域),则连接将被终止,并引发错误。如果禁用,错误将被忽略,连接将正常执行。
关于异常级别,有三个级别
- 0:禁用异常。错误仅设置状态码响应。
- 1:仅在网络错误上引发异常。HTTP 错误将报告为状态码。
- 2:在任何错误上引发异常。
默认值为异常级别 1 和启用证书验证。
支持的方法有:GET、POST、PUT、HEAD、DELETE 和 OPTIONS。请求调用返回请求正文,其他数据(如响应头)存储在内部,可以检索。
这里,一个基本示例
$http=new simpleHTTP; $resp=$http->get('https://www.example.com/'); printf("Response data:\n%s\n",$resp);
这个库可以以 PSR7 格式返回响应,但需要安装第三方库。目前支持 HttpSoft、Nyholm、Guzzle、Laminas-diactoros 和 Slim。simpleHTTP 会检测已安装的库,如果没有安装任何库,则会引发错误。
PSR7 响应很有用,因为主要的 PHP 框架都使用这种格式。
获取 PSR7 响应的示例
$http=new simpleHTTP; $http->get('https://www.example.com/'); $resp=$http->PSRResponse();
示例
更多示例在示例文件夹中。
这是最简单的用法
$http=new simpleHTTP; $resp1=$http->get('https://www.example.com/data1.txt'); $resp2=$http->get('https://www.example.com/data2.json');
如您所见,该对象直接通过URL提供请求。
这里,一个配置异常和证书接受示例
// Exception level 2 (exception on network or HTTP errors) // Certificate validation disabled (Will accept any certificate) $http=new simpleHTTP(2,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=$http->post('https://www.example.com/sendpoint',$data);
这里,一个带有JSON编码体的POST请求
// Default exception level is 1, which means exceptions will be fired // only on network errors $http=new simpleHTTP; $data=[ 'field1'=>'Data to send in field1', 'field2'=>'Data to send in field2' ]; $resp=$http->postJSON('https://www.example.com/jsonentrypoint',$data);
这里,一个以图像作为数据体的POST请求
$http=new simpleHTTP; $data=file_get_contents('exampleimage.jpg'); $http->postRAW('https://www.example.com/imagenentrypoint','image/jpeg',$data);
但是,如果您需要添加一个认证头呢?
$http=new simpleHTTP; // Create the authentication header $headers=[ 'Authorization: Bearer AuthenticationToken' ]; // Configure the default headers to send $http->setExtraHeaders($headers); $data=[ 'field1'=>'Data to send in field1', 'field2'=>'Data to send in field2' ]; $resp=$http->post('https://www.example.com/sendpoint',$data);
但是,如果我们只需要在特定请求中添加一个额外的头呢?
$http=new simpleHTTP; $headers=[ 'Authorization: Bearer AuthenticationToken' ]; $http->setExtraHeaders($headers); $data=[ 'field1'=>'Data to send in field1', 'field2'=>'Data to send in field2' ]; // Add an extra header to this request $resp=$http->post('https://www.example.com/sendpoint',$data,['X-Extra-Header: Data']);
此类请求使用 "simpleHTTP/7.0" 作为用户代理。您可以设置自己的用户代理
$http=new simpleHTTP; // Add an User-Agent header $headers=[ 'Authorization: Bearer AuthenticationToken', 'User-Agent: MyOwnUserAgent/1.0' ]; $http->setExtraHeaders($headers); $data=[ 'field1'=>'Data to send in field1', 'field2'=>'Data to send in field2' ]; $resp=$http->post('https://www.example.com/sendpoint',$data);
这里,一个PUT请求示例
$http=new simpleHTTP; $headers=[ 'Authorization: Bearer AuthenticationToken', 'User-Agent: MyOwnUserAgent/1.0' ]; $http->setExtraHeaders($headers); $data=[ 'field1'=>'Data to send in field1', 'field2'=>'Data to send in field2' ]; // Example PUT with body in JSON format $resp=$http->putJSON('https://www.example.com/sendpoint',$data);
但是,我怎样才能获取响应头和状态结果?
$http=new simpleHTTP; $resp=$http->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
许可协议
此库根据MIT许可协议授权