本文概述
- 7. Yii2 Httpclient
- 6. Buzz
- 5. Requests
- 4. Httplug
- 3. Httpful
- 2. Unirest PHP
- 1. Guzzle
7. Yii2 HttpclientYii2 Httpclient是Yii Framework的扩展, 它允许你使用几行代码来实现有用的Http客户端。为了发送HTTP请求, 你需要实例化[[\ yii \ httpclient \ Client]]并使用其createRequest()方法创建新的HTTP请求。然后, 你应该根据自己的目标配置所有请求参数并发送请求。结果, 你将获得一个[[\ yii \ httpclient \ Response]]实例, 该实例包含所有响应信息和数据。例如:
use yii\httpclient\Client;
$client = new Client();
$response = $client->
createRequest()
->
setMethod('POST')
->
setUrl('http://example.com/api/1.0/users')
->
setData(['name' =>
'John Doe', 'email' =>
'johndoe@example.com'])
->
send();
if ($response->
isOk) {
$newUserId = $response->
data['id'];
}
6. BuzzBuzz是用于发布HTTP请求的轻量级PHP 5.3库。 Buzz由Kris Wallsmith于2010年创建。多年来, 该项目非常受欢迎, 下载量超过700万。自2017年8月以来, Tobias Nyholm一直在维护该库。 Buzz的想法仍然是相同的, 我们应该有一个简单的API并模仿浏览器的行为以便于测试。我们不应该重新发明轮子, 我们不应该像其他客户(如Guzzle)一样强大和灵活。但是, 我们确实非常重视性能。
我们确实喜欢PSR, 这是我们希望支持的PSR的愿望清单:
- PSR-1(代码样式)
- PSR-2(代码样式)
- PSR-4(自动加载)
- PSR-7(HTTP消息)
- PSR-15(HTTP中间件)
- PSR-17(HTTP工厂)
- PSR-18(HTTP客户端)
<
?php$browser = new Buzz\Browser();
$response = $browser->
get('http://www.google.com');
echo $browser->
getLastRequest()."\n";
// $response is an object.
// You can use $response->
getContent() or $response->
getHeaders() to get only one part of the response.
echo $response;
5. Requests【7个最好的PHP Http客户端库】Requests是一个用PHP编写的HTTP库, 专门编写为易于使用。它大致基于出色的Requests Python库中的API。请求是ISC许可的(类似于新的BSD许可), 并且没有依赖关系, 除了PHP 5.2+。尽管PHP用作网络语言, 但仍然严重缺乏发送HTTP请求的工具。至少可以说, cURL有一个有趣的API, 你不一定总是依赖它。套接字仅提供低级别的访问, 并且需要你构建自己分析的大多数HTTP响应。它的语法非常友好并且易于使用:
$headers = array('Accept' =>
'application/json');
$options = array('auth' =>
array('user', 'pass'));
$request = Requests::get('https://api.github.com/gists', $headers, $options);
var_dump($request->
status_code);
// int(200)var_dump($request->
headers['content-type']);
// string(31) "application/json;
charset=utf-8"var_dump($request->
body);
// string(26891) "[...]"
通过请求, 你可以发送HEAD, GET, POST, PUT, DELETE和PATCH HTTP请求。你可以使用简单的数组添加标题, 表单数据, 多部分文件和参数, 并以相同的方式访问响应数据。请求使用cURL和fsockopen, 具体取决于系统所提供的功能, 但不使用任何方式抽象所有令人讨厌的内容, 并提供一致的API。
4. HttplugPHP-HTTP是标准化PHP包的HTTP交互的下一步。它建立在PSR-7之上, 该PSR-7定义了HTTP请求和响应的接口。但是, PSR-7没有描述你创建请求或发送请求的方式。 PHP-HTTP旨在通过提供HTTP客户端接口HTTPlug来填补这一空白。
PHP-HTTP具有三个目标:
- 鼓励软件包开发人员依赖简单的HTTPlug接口, 而不是具体的HTTP客户端。
- 向PHP社区提供高质量的HTTP相关软件包。
- 随着时间的流逝, 使HTTPlug成为PHP标准建议书(PSR), 以便客户端将直接实现HTTPlug接口, 并且不再需要我们的适配器。
3. HttpfulHttpful是一个简单的, 可链接的, 可读的PHP库, 旨在使讲HTTP更加明智。它使开发人员可以专注于与API交互, 而不是在curl set_opt页面中进行筛选, 并且是理想的PHP REST客户端。 Httpful功能:
- 可读的HTTP方法支持(GET, PUT, POST, DELETE, HEAD和OPTIONS)
- 自定义标题
- 自动” 智能” 解析
- 自动有效负载序列化
- 基本认证
- 客户端证书授权
- 请求” 模板”
// Make a request to the GitHub API with a custom
// header of "X-Trvial-Header: Just as a demo".
$url = "https://api.github.com/users/nategood";
$response = \Httpful\Request::get($url)
->
expectsJson()
->
withXTrivialHeader('Just as a demo')
->
send();
echo "{$response->
body->
name} joined GitHub on " .
date('M jS', strtotime($response->
body->
created_at)) ."\n";
2. Unirest PHPUnirest是一组由Mashape构建和维护的, 以多种语言提供的轻量级HTTP库, 该库还维护着开源API Gateway Kong。该库具有:
- 调用GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH请求的实用方法
- 支持表单参数, 文件上传和自定义主体实体
- 支持gzip
- 本地支持基本, 摘要, 协商, NTLM身份验证
- 可自定义的超时
- 每个请求的可自定义默认标头(DRY)
- 自动将JSON解析为本地对象以进行JSON响应
$headers = array('Accept' =>
'application/json');
$query = array('foo' =>
'hello', 'bar' =>
'world');
$response = Unirest\Request::post('http://mockbin.com/request', $headers, $query);
$response->
code;
// HTTP Status code
$response->
headers;
// Headers
$response->
body;
// Parsed body
$response->
raw_body;
// Unparsed body
1. GuzzleGuzzle是一个PHP HTTP客户端, 可以轻松发送HTTP请求, 并且可以轻松地与Web服务集成。 Guzzle功能:
- 简单的界面, 可用于构建查询字符串, POST请求, 流式传输大型上传文件, 流式传输大型下载文件, 使用HTTP cookie, 上传JSON数据等。
- 可以使用同一接口发送同步和异步请求。
- 将PSR-7接口用于请求, 响应和流。这使你可以在Guzzle中使用其他PSR-7兼容的库。
- 提取底层的HTTP传输, 使你可以编写环境并传输不可知的代码;也就是说, 对cURL, PHP流, 套接字或非阻塞事件循环没有硬性依赖。
- 中间件系统使你可以增强和构成客户端行为。
$client = new GuzzleHttp\Client();
$res = $client->
request('GET', 'https://api.github.com/user', [
'auth' =>
['user', 'pass']
]);
echo $res->
getStatusCode();
// "200"
echo $res->
getHeader('content-type');
// 'application/json;
charset=utf8'
echo $res->
getBody();
// {"type":"User"...'
如果你知道另一个很棒的PHP Http客户端库, 请在注释框中与社区共享。
推荐阅读
- 7个适用于PHP的最佳Curl包装器库
- 7个最佳360°(矩形)图像查看器JavaScript插件
- 5个最佳开放源代码HTML渲染库,可将HTML5/CSS3用作C#的用户界面
- 7个最好的开源终端仿真器
- 5个最佳开源PHP代码混淆器库
- 十大最佳Android评分栏小部件
- 9个最好的React应用程序的最佳优化技术
- 5个最好的PHP开源PDF生成库
- App被杀死时的回调-React Native