webguosai / http-client-v2
http客户端
dev-main
2025-07-16 09:54 UTC
Requires
- php: >=7.2
- ext-curl: *
- ext-iconv: *
- ext-json: *
- ext-libxml: *
- ext-openssl: *
- ext-simplexml: *
Requires (Dev)
- symfony/var-dumper: ^3.4
This package is auto-updated.
Last update: 2025-07-16 09:53:33 UTC
README
运行环境
- php >= 7.2
- composer
安装
composer require webguosai/http-client-v2 -vvv
使用
初始化
$options = [ //超时(单位秒) 'timeout' => 3, //代理ip 'proxySocks5' => true, // 使用 socks5 代理 'proxy' => '0.0.0.0:8888', // 代理ip,如:0.0.0.0:8888 //重定向、及最多重定向跳转次数 'redirects' => false, 'maxRedirect' => 5, //cookie自动保存路径 'cookieJarFile' => 'cookie.txt', ]; // 实例化 $http = new \Webguosai\HttpClient\HttpClient($options); // 工厂模式 $http = \Webguosai\HttpClient\HttpClient::factory([ 'timeout' => 3, ])
请求
$url = 'https://httpbin.org'; $data = ['data' => '111', 'data2' => '222']; $headers = [ 'User-Agent' => 'http-client browser', 'cookie' => 'login=true' ]; //所有方法 $response = $http->request($url, $method, $data, $headers); $response = $http->get($url, $query, $headers); $response = $http->post($url, $data, $headers); $response = $http->put($url, $data, $headers); $response = $http->patch($url, $data, $headers); $response = $http->delete($url, $data, $headers); $response = $http->head($url, $data, $headers); $response = $http->options($url, $data, $headers);
响应
[$status, $throw] = $response->ok(); // $response->getRequestHeaders(); // 请求头 $response->getHeaders(); // 响应头 $response->getBody(); // body $response->getStatusCode(); // http状态码 $response->getInfo(); // 其它信息 $response->json(); // json $response->xml(); // xml $response->ok();// curl_code = 0 && http_code = 200 返回真 $response->getCurlErrorCode(); // 错误信息
data 传值方式
// multipart/form-data $data = ['data' => '111', 'data2' => '222']; // application/x-www-form-urlencoded $data = http_build_query($data); // application/json $data = json_encode($data); // 文件上传 $_FILES['file'] 接收 $data = [ 'file' => new \CURLFile('1.jpg'), ]; $response = $http->post($url, $data);
headers 传值方式
// 数组传递 $headers = [ 'User-Agent: chrome', 'User-Agent' => 'chrome', ]; // 纯字符串 (一般为从浏览器复制) $headers = 'User-Agent: chrome Referer: https://www.x.com Cookie: cookie=6666666'; $response = $http->post($url, $data, $headers);
实操
$http = \Webguosai\HttpClient\HttpClient::factory([ 'timeout' => 3, ]) $response = $http->get('http://www.baidu.com'); /** @var $throw \Webguosai\HttpClient\Exception\RequestException **/ [$status, $throw] = $response->ok(); if ($status) { var_dump($response->getBody()); var_dump($response->json()); } else { var_dump($throw->getMessage()); var_dump($throw->getErrorType()); var_dump($throw->getCode()); }
异常
try { $response->throw(); var_dump($response->json()); } catch (\Webguosai\HttpClient\Exception\RequestException $e) { var_dump($e->getMessage()); // var_dump($e->getErrorType()); var_dump($e->getCode()); var_dump($e->getRequestArgs()); }
License
MIT