easyhttp v1.1发布,新增异步并发请求
时间:2020-03-31 18:22 来源:linux.it.net.cn 作者:IT
EasyHttp 是一个轻量级、语义化、对IDE友好的HTTP客户端,支持常见的HTTP请求、异步请求和并发请求,让你可以快速地使用 HTTP 请求与其他 Web 应用进行通信。
EasyHttp并不强制依赖于cURL,如果没有安装cURL,EasyHttp会自动选择使用PHP流处理,或者你也可以提供自己的发送HTTP请求的处理方式。
1、新增异步并发请求
use Gouguoyin\EasyHttp\Response;
use Gouguoyin\EasyHttp\RequestException;
$promises = [
Http::getAsync('http://easyhttp.gouguoyin.cn/api/sleep3.json'),
Http::getAsync('http1://easyhttp.gouguoyin.cn/api/sleep1.json', ['name' => 'gouguoyin']),
Http::postAsync('http://easyhttp.gouguoyin.cn/api/sleep2.json', ['name' => 'gouguoyin']),
];
Http::concurrency(10)->multiAsync($promises, function (Response $response, $index) {
echo "发起第 $index 个异步请求,请求时长:" . $response->json()->second . '秒' . PHP_EOL;
}, function (RequestException $e, $index) {
echo "发起第 $index 个请求失败,失败原因:" . $e->getMessage() . PHP_EOL;
});
//输出
发起第 1 个请求失败,失败原因:cURL error 1: Protocol "http1" not supported or disabled in libcurl (see https://curl.haxx.se/libcurl/c/libcurl-errors.html)
发起第 2 个异步请求,请求时长:2 秒
发起第 0 个异步请求,请求时长:3 秒
2、异步请求时如果没有请求参数可以省略
use Gouguoyin\EasyHttp\Response;
use Gouguoyin\EasyHttp\RequestException;
Http::getAsync('http://easyhttp.gouguoyin.cn/api/sleep3.json', ['token' => TOKEN], function (Response $response) {
echo '异步请求成功,响应内容:' . $response->body() . PHP_EOL;
}, function (RequestException $e) {
echo '异步请求异常,错误码:' . $e->getCode() . ',错误信息:' . $e->getMessage() . PHP_EOL;
});
echo json_encode(['code' => 200, 'msg' => '请求成功'], JSON_UNESCAPED_UNICODE) . PHP_EOL;
//输出
{"code":200,"msg":"请求成功"}
异步请求成功,响应内容:{"code":200,"msg":"success","second":3}
Http::getAsync('http1://easyhttp.gouguoyin.cn/api/sleep3.json', function (Response $response) {
echo '异步请求成功,响应内容:' . $response->body() . PHP_EOL;
}, function (RequestException $e) {
echo '异步请求异常,错误信息:' . $e->getMessage() . PHP_EOL;
});
echo json_encode(['code' => 200, 'msg' => '请求成功'], JSON_UNESCAPED_UNICODE) . PHP_EOL;
//输出
{"code":200,"msg":"请求成功"}
异步请求异常,错误信息:cURL error 1: Protocol "http1" not supported or disabled in libcurl (see https://curl.haxx.se/libcurl/c/libcurl-errors.html)
3、新增withUA()方法
$response = Http::withUA('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3100.0 Safari/537.36')->post(...);
4、新增asMultipart()方法,attach()的别名
$response = Http::asMultipart(
'file_input_name', file_get_contents('photo1.jpg'), 'photo2.jpg'
)->post('http://test.com/attachments');
$response = Http::asMultipart(
'file_input_name', fopen('photo1.jpg', 'r'), 'photo2.jpg'
)->post(...);
5、get()、getAsync()方法支持带参数的url
$response = Http::get('http://httpbin.org/get');
$response = Http::get('http://httpbin.org/get?name=gouguoyin');
$response = Http::get('http://httpbin.org/get?name=gouguoyin', ['age' => 18]);
(责任编辑:IT)
EasyHttp 是一个轻量级、语义化、对IDE友好的HTTP客户端,支持常见的HTTP请求、异步请求和并发请求,让你可以快速地使用 HTTP 请求与其他 Web 应用进行通信。 EasyHttp并不强制依赖于cURL,如果没有安装cURL,EasyHttp会自动选择使用PHP流处理,或者你也可以提供自己的发送HTTP请求的处理方式。 1、新增异步并发请求 use Gouguoyin\EasyHttp\Response; use Gouguoyin\EasyHttp\RequestException; $promises = [ Http::getAsync('http://easyhttp.gouguoyin.cn/api/sleep3.json'), Http::getAsync('http1://easyhttp.gouguoyin.cn/api/sleep1.json', ['name' => 'gouguoyin']), Http::postAsync('http://easyhttp.gouguoyin.cn/api/sleep2.json', ['name' => 'gouguoyin']), ]; Http::concurrency(10)->multiAsync($promises, function (Response $response, $index) { echo "发起第 $index 个异步请求,请求时长:" . $response->json()->second . '秒' . PHP_EOL; }, function (RequestException $e, $index) { echo "发起第 $index 个请求失败,失败原因:" . $e->getMessage() . PHP_EOL; }); //输出 发起第 1 个请求失败,失败原因:cURL error 1: Protocol "http1" not supported or disabled in libcurl (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) 发起第 2 个异步请求,请求时长:2 秒 发起第 0 个异步请求,请求时长:3 秒 2、异步请求时如果没有请求参数可以省略 use Gouguoyin\EasyHttp\Response; use Gouguoyin\EasyHttp\RequestException; Http::getAsync('http://easyhttp.gouguoyin.cn/api/sleep3.json', ['token' => TOKEN], function (Response $response) { echo '异步请求成功,响应内容:' . $response->body() . PHP_EOL; }, function (RequestException $e) { echo '异步请求异常,错误码:' . $e->getCode() . ',错误信息:' . $e->getMessage() . PHP_EOL; }); echo json_encode(['code' => 200, 'msg' => '请求成功'], JSON_UNESCAPED_UNICODE) . PHP_EOL; //输出 {"code":200,"msg":"请求成功"} 异步请求成功,响应内容:{"code":200,"msg":"success","second":3} Http::getAsync('http1://easyhttp.gouguoyin.cn/api/sleep3.json', function (Response $response) { echo '异步请求成功,响应内容:' . $response->body() . PHP_EOL; }, function (RequestException $e) { echo '异步请求异常,错误信息:' . $e->getMessage() . PHP_EOL; }); echo json_encode(['code' => 200, 'msg' => '请求成功'], JSON_UNESCAPED_UNICODE) . PHP_EOL; //输出 {"code":200,"msg":"请求成功"} 异步请求异常,错误信息:cURL error 1: Protocol "http1" not supported or disabled in libcurl (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) 3、新增withUA()方法 $response = Http::withUA('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3100.0 Safari/537.36')->post(...); 4、新增asMultipart()方法,attach()的别名 $response = Http::asMultipart( 'file_input_name', file_get_contents('photo1.jpg'), 'photo2.jpg' )->post('http://test.com/attachments'); $response = Http::asMultipart( 'file_input_name', fopen('photo1.jpg', 'r'), 'photo2.jpg' )->post(...); 5、get()、getAsync()方法支持带参数的url $response = Http::get('http://httpbin.org/get'); $response = Http::get('http://httpbin.org/get?name=gouguoyin'); $response = Http::get('http://httpbin.org/get?name=gouguoyin', ['age' => 18]); (责任编辑:IT) |