catmes / http-client
Http请求工具
v1.0.3
2021-05-30 17:48 UTC
This package is not auto-updated.
Last update: 2024-05-13 07:58:41 UTC
README
Http请求工具
安装
$ composer require catmes/http-client
基本用法
<?php
use Catmes\HttpClient\Curl;
$getData = Curl::get("https://www.baidu.com");
echo $getData;
$postData = ['username'=>'tom','password'=>'pwd123'];
// x-www-form-urlencoded 数据格式
$postResponse = Curl::post("http://default_form_urlencoded", $postData);
// json 数据格式
$postResponse = Curl::post("http://post_json_data", $postData, 'json');
高级用法
上传文件
use Catmes\HttpClient\Curl;
$uploadFilePath = __DIR__."/sample_img.jpg";
$postData['upload'] = new \CURLFile($uploadFilePath);
$curl = new Curl($url, 'post', $postData);
$response = $curl->getResponse();
// 服务端处理上传文件的PHP代码
if($_FILES){
$filename = $_FILES['upload']['name'];
$tmpname = $_FILES['upload']['tmp_name'];
//保存图片到当前脚本所在目录
if(move_uploaded_file($tmpname, __DIR__.'/'.$filename)){
echo ('上传成功');
}
}
下载文件
$url = "https://download.virtualbox.org/virtualbox/6.1.22/virtualbox-6.1_6.1.22-144080~Debian~buster_amd64.deb";
$filepath = "virtualbox-6.1_6.1.22-buster_amd64.deb";
$curl = new Curl($url);
$curl->downloadFile($filepath)->getResponse();
模拟登录
获取登录的cookie缓存
$postData = ['username'=>'tom','password'=>'pwd123'];
$curl = new Curl("https://yoursite/login_post.php", 'post', $postData);
// 设置提交数据为 x-www-form-urlencoded。
$curl->postUrlEncoded();
// 通过设置自定义请求头,伪造访问来源
$curl->setHeader("referer","https://yoursite.com/login.php");
// 设定登录成功后,保存响应头的 cookie 数据到本地文件
$curl->cookieSave("curl.cookie");
// getResponse()方法执行HTTP网络请求,并返回响应的Response对象。
$response = $curl->getResponse();
通过cookie访问授权网址
// 获取前面模拟登录成功后,返回的响应头。 为数组键值对类型。
$headersMap = $response->getHeadersMap();
// POST登录成功后,读取本地的cookie文件。 可以通过前面登录成功后,响应头的 `location` 数据,进行页面自动跳转。
if(array_key_exists('location', $headersMap)){
$curl = new Curl($headersMap['location']);
$response = $curl->cookieRequest("curl.cookie")->getResponse();
echo $response;
}
自定义请求头
$curl = new Curl("https://www.baidu.com");
// 通过设置用户代理 user-agent 请求头,模拟出win10的谷歌浏览器。
$curl->setHeader('user-agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Safari/537.36');
$response = $curl->getResponse();
echo $response;
响应对象
正常请求成功后,返回响应类 Catmes\HttpClient\Response
的对象实例。
因存在__toString()魔术方法, 直接输出为消息主体字符串。 即 Response
实例的 getBody()方法
。
// 获取响应头。 为数组键值对类型。
$headersMap = $response->getHeadersMap();
// 获取响应头。 数组列表类型。
$responseHeaders = $response->getHeadersList();
// 获取响应消息主体。字符串类型。
$responseBody = $response->getBody();
// 获取响应状态码。数据类型为整数。 如200, 400, 302 ...
$responseStatusCode = $response->getStatusCode();