itabrezshaikh / unirest-php
Unirest PHP
This package is auto-updated.
Last update: 2024-09-16 20:50:36 UTC
README
Unirest 是一组轻量级的 HTTP 库,支持多种语言。
功能
- 提供调用
GET
、HEAD
、POST
、PUT
、DELETE
、CONNECT
、OPTIONS
、TRACE
、PATCH
请求的实用方法 - 支持表单参数、文件上传和自定义正文实体
- 支持 gzip
- 原生支持 Basic、Digest、Negotiate、NTLM 认证
- 可自定义超时时间
- 可自定义每个请求的默认头信息(DRY)
- 自动将 JSON 响应解析为本地对象
需求
安装
使用 Composer
要使用 Composer 安装 unirest-php,只需将以下内容添加到您的 composer.json
文件中
{ "require-dev": { "apimatic/unirest-php": "2.*" } }
或者运行以下命令
composer require apimatic/unirest-php
这将获取最新版本的报告器并将其安装。如果您想使用未标记的 master 版本,可以使用以下命令
composer require apimatic/php-test-reporter:@dev-master
Composer 在 ./vendor/autoloader.php
安装自动加载器。要将在您的脚本中包含库,请添加
require_once 'vendor/autoload.php';
如果您使用 Symfony2,自动加载器需要自动检测。
从源安装
Unirest-PHP 需要 PHP v5.4+
。从 Github 下载 PHP 库,然后在您的脚本中包含 Unirest.php
git clone git@github.com:apimatic/unirest-php.git
require_once '/path/to/unirest-php/src/Unirest.php';
使用方法
创建请求
您可能想知道如何使用 Unirest 使 PHP 中创建请求更加容易,让我们看看一个工作示例
$headers = array("Accept" => "application/json"); $body = array("foo" => "hellow", "bar" => "world"); $response = Unirest\Unirest::post("http://mockbin.com/request", $headers, $body); $response->code; // HTTP Status code $response->headers; // Headers $response->body; // Parsed body $response->raw_body; // Unparsed body
文件上传
要使用多部分表单表示上传文件,请将 Unirest\File::add($path)
的返回值作为参数的值
$headers = array("Accept" => "application/json"); $body = array("file" => Unirest\File::add("/tmp/file.txt")); $response = Unirest\Unirest::post("http://mockbin.com/request", $headers, $body);
自定义实体正文
发送自定义正文,如 JSON 对象,而不是字符串或表单样式参数,我们使用 json_encode 对正文进行编码
$headers = array("Accept" => "application/json"); $body = json_encode(array("foo" => "hellow", "bar" => "world")); $response = Unirest\Unirest::post("http://mockbin.com/request", $headers, $body);
身份验证
首先,如果您使用的是 Mashape
// Mashape auth Unirest\Unirest::setMashapeKey('<mashape_key>');
否则,传递用户名、密码(可选),默认为基本认证
// basic auth Unirest\Unirest::auth('username', 'password');
第三个参数,是一个掩码,将告诉 Unirest 您想使用哪种 HTTP 身份验证方法进行代理身份验证。
如果设置了多个位,Unirest(在 PHP 的 libcurl 级别)将首先查询网站以查看它支持哪些身份验证方法,然后选择您允许它使用的最佳方法。对于某些方法,这将导致额外的网络往返。
支持的方法
// custom auth method Unirest\Unirest::proxyAuth('username', 'password', CURLAUTH_DIGEST);
Unirest 的早期版本通过提供 username
和 password
参数支持 基本认证
$response = Unirest\Unirest::get("http://mockbin.com/request", null, null, "username", "password");
这已被弃用,并将在 v.3.0.0
中完全删除,请使用 Unirest\Unirest::auth()
方法代替
请求对象
Unirest\Unirest::get($url, $headers = array(), $parameters = null) Unirest\Unirest::post($url, $headers = array(), $body = null) Unirest\Unirest::put($url, $headers = array(), $body = null) Unirest\Unirest::patch($url, $headers = array(), $body = null) Unirest\Unirest::delete($url, $headers = array(), $body = null)
url
- 要执行操作和请求信息的端点、地址或 uri。headers
- 请求头,作为关联数组或对象body
- 请求体,作为关联数组或对象
您可以发送带有任何 标准 或自定义 HTTP 方法的请求
$request = Unirest\Unirest::prepare(Unirest\Method::LINK, $url, $headers = array(), $body); $request = Unirest\Unirest::prepare('CHECKOUT', $url, $headers = array(), $body); //and then $response = $request->getResponse();
响应对象
接收到响应后,Unirest 以对象的形式返回结果,这个对象应该始终包含与每个语言相关的响应详细信息的相同键。
code
- HTTP 响应状态码(例如200
)headers
- HTTP响应头body
- 可用情况下解析后的响应体,例如JSON响应被解析为对象/关联数组。raw_body
- 未解析的响应体
高级配置
您可以设置一些高级配置以调整Unirest-PHP
自定义JSON解码标志
Unirest使用PHP的JSON扩展来自动解码JSON响应。有时您可能希望返回关联数组,限制递归深度,或使用任何自定义标志。
要这样做,只需使用jsonOpts
请求方法设置所需选项
Unirest\Unirest::jsonOpts(true, 512, JSON_NUMERIC_CHECK & JSON_FORCE_OBJECT & JSON_UNESCAPED_SLASHES);
超时
您可以设置一个自定义的超时值(单位为秒)
Unirest\Unirest::timeout(5); // 5s timeout
代理
设置即将进行请求时使用的代理。
您还可以将代理类型设置为以下之一:CURLPROXY_HTTP
、CURLPROXY_HTTP_1_0
、CURLPROXY_SOCKS4
、CURLPROXY_SOCKS5
、CURLPROXY_SOCKS4A
和CURLPROXY_SOCKS5_HOSTNAME
。
查看cURL文档获取更多信息.
// quick setup with default port: 1080 Unirest\Unirest::proxy('10.10.10.1'); // custom port and proxy type Unirest\Unirest::proxy('10.10.10.1', 8080, CURLPROXY_HTTP); // enable tunneling Unirest\Unirest::proxy('10.10.10.1', 8080, CURLPROXY_HTTP, true);
代理认证
传递用户名,密码(可选),默认为基本认证
// basic auth Unirest\Unirest::proxyAuth('username', 'password');
第三个参数,是一个掩码,将告诉 Unirest 您想使用哪种 HTTP 身份验证方法进行代理身份验证。
如果设置了多个位,Unirest(在 PHP 的 libcurl 级别)将首先查询网站以查看它支持哪些身份验证方法,然后选择您允许它使用的最佳方法。对于某些方法,这将导致额外的网络往返。
请参阅认证以获取支持的更多方法详细信息。
// basic auth Unirest\Unirest::proxyAuth('username', 'password', CURLAUTH_DIGEST);
默认请求头
您可以设置默认头,这些头将在每次请求中发送
Unirest\Unirest::defaultHeader("Header1", "Value1"); Unirest\Unirest::defaultHeader("Header2", "Value2");
您可以将默认头批量设置
Unirest\Unirest::defaultHeaders(array( "Header1" => "Value1", "Header2" => "Value2" ));
您可以通过以下方式随时清除默认头
Unirest\Unirest::clearDefaultHeaders();
SSL验证
您可以在消费受SSL保护的端点时明确启用或禁用SSL证书验证
Unirest\Unirest::verifyPeer(false); // Disables SSL cert validation
默认为true
。
实用方法
// alias for `curl_getinfo` Unirest\Unirest::getInfo() // returns internal cURL handle Unirest\Unirest::getCurlHandle()
由Mashape团队制作