该工具仅仅只是将php自带的curl功能,进行了一层封装。使得一些日常使用http请求时,不需要去重复的配置curl信息,减少开发工作量。

导入使用

下载链接:https://download.csdn.net/download/d745282469/85030673

如果是用的TP框架,则可在public/index.php中按照以下方式进行导入:

namespace think;require __DIR__ . '/../vendor/autoload.php';// HTTP请求工具,具体的路径以实际为准
require __DIR__. '/../extend/HttpTool/AutoLoad.php'; // 执行HTTP应用并响应
$http = (new App())->http;$response = $http->run();$response->send();$http->end($response);

非TP框架的话,在需要使用到的php文件中,在顶部加入以下代码即可:

require __DIR__. '/../extend/HttpTool/AutoLoad.php';

具体的路径,以实际为准。

使用前须知

确定当前的php已经开启了curl扩展!!!

每个请求,主要涉及到以下两个类:

DHttpClient:请求客户端,主要用于配置代理、https验证、ssl证书、http版本等,具体可查看该类提供的方法。

DRequestBuilder:请求体构造器,主要用于配置请求相关的参数,如:请求地址、请求方式、请求头、请求cookie等。

DRequest:由DRequestBuilder构造得出,没啥用,只是给DHttpClient去使用的,和Builder基本一样。

发送请求

get请求
// 请求地址
$url = 'htts://www.baidu.com';// 请求参数,如果为get请求,会自动把参数拼接到请求地址中
$param['wd'] = 'PHP官方文档';// 请求构造器
$requestBuilder = new DRequestBuilder($url);// 可以采用链式写法。paramData()是用于设置请求参数的,接收的是数组类型。
// get()表示该请求使用get方式,同理还有post()。如果不指定请求方式,默认为get
$requestBuilder->paramData($param)->get();// 实例化请求客户端
$client = new DHttpClient();// 执行请求并获取结果
$response = $client->execute($requestBuilder->build());
post请求
// 请求地址
$url = 'htts://www.xxx.com';// 请求参数,如果为get请求,会自动把参数拼接到请求地址中
$param['wd'] = 'PHP官方文档';// 请求构造器
$requestBuilder = new DRequestBuilder($url);// 可以采用链式写法。paramData()是用于设置请求参数的,接收的是数组类型。
// 注意这里写的是post(),如果漏写则会默认用get()
$requestBuilder->paramData($param)->post();// 实例化请求客户端
$client = new DHttpClient();// 执行请求并获取结果
$response = $client->execute($requestBuilder->build());
添加请求头

设置请求头时,主要是对构造器,即DRequestBuilder,使用addHeader()方法。该方法接收一个DHeader对象。

以下举例,访问一个需要带token的接口时的一个例子。

$url = '请求地址';$param = ['请求参数'];$requestBuilder = new DRequestBuilder($url);// DHeader对象,构造函数接收两个参数,一个是Header的key,一个是Header对应的value
$requestBuilder->addHeader(new DHeader('token','实际的token值'))->post();$client = new DHttpClient();
$response = $client->execute($requestBuilder->build());

重复设置相同key的请求头,工具不会自动进行覆盖!!!具体发出去的请求是什么样的,没有测试过。

添加cookie

设置cookie,主要使用到的是DRequestBuilder下面的addCookie()方法。该方法接收一个DCookie对象参数。

$url = '请求地址';$param = ['请求参数'];$requestBuilder = new DRequestBuilder($url);// DCookie对象,构造函数接收两个参数,一个是Cookie的key,一个是Cookie对应的value
$requestBuilder->addCookie(new DCookie('cookie的key','对应的cookie的value'))->post();$client = new DHttpClient();
$response = $client->execute($requestBuilder->build());
某些接口需要申明ContentType的特殊情况

工具内置了两个常见的ContentType,一个是application/x-www-form-urlencoded,一个是application/json。

对应的使用方法参考下面的例子:

$requestBuilder =  new DRequestBuilder('请求地址');// 此时工具会自动处理,加上请求头:Content-Type:application/json,并对请求参数进行处理
$requestBuilder->jsonData(数组类型的请求参数);// 此时工具会自动处理,加上请求头:Content-Type:application/x-www-form-urlencoded,并对请求参数进行处理
$requestBuilder->urlEncodeData(数组类型的请求参数);

如果没有使用以上两种方式设置ContentType,并且同时没有调用addHeader去设置的话,那么默认的请求头中是没有ContentType的。这种情况,对于有些接口,可能会导致接口提示缺少参数或参数错误之类的错误信息。

出现这种情况,是因为没设置ContentType时,工具会将请求参数转换成字符串的形式。然后对于有些接口的服务端那边,由于识别不到ContentType,所以无法确定传过去的字符串需要用什么方式去解析,导致解析不出来参数,因此报错。

获取响应结果

当调用DHttpClient的execute()方法后,会返回一个DResponse对象。对象中,主要有以下几个属性:

statusCode:HTTP响应状态码

responseStr:响应内容的字符串形式

cookieList:包含接口返回的DCookie对象的一个数组,默认为空

header:包含响应头DHeader对象的一个数组,默认为空

获取特定的响应头

使用DResponse->getHeader()方法。该方法接收一个key,用于判断需要获取哪一个响应头。

以下举例获取HTTP状态码为304重定向时,需要获取重定向后的地址,那么就需要用到该方法。

$newUrl = $response->getHeader('Location');

【PHP】HTTP请求工具使用文档相关推荐

  1. 接口文档编辑工具+接口文档编写

    目录 接口文档编辑工具 接口文档编写 补充 GET与POST的区别 接口文档编辑工具 参考@Lucky锦[接口文档编辑工具] Swagger: 通过固定格式的注释生成文档. 省时省力,不过有点学习成本 ...

  2. Confluence团队协同工具使用文档

    @(项目管理) Confluence协同工具使用文档 欢迎关注作者博客 简书传送门 文章目录 1.前言 2.Confluence介绍 2.1.统一信息平台 2.2.集成JIRA Software 2. ...

  3. post请求下载excel文档解决方法

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/Sunny__wei/article/d ...

  4. 【电脑办公软件】万彩办公大师教程丨PDF批量转SWF工具帮助文档

    PDF批量转SWF工具帮助文档 关于万彩办公大师的PDF批量转SWF工具 拖拽式添加文件,自定义单个PDF页面输出SWF或自动播放SWF,无损转换,批量操作.文件格式转换后可保持原有文档的版式.图片. ...

  5. 老油条用什么工具写文档?

    写代码,哪个程序员都不害怕. 写文档,哪个程序员都害怕! 为什么? 还不是因为 API 工具不好使,不便捷,同步麻烦,测试看不懂-- 最近调研了身边一些开发团队,发现他们列举的工具中,都出现过同一款工 ...

  6. 【办公常用软件】万彩办公大师教程丨PDF转HTML工具帮助文档

    关于PDF转HTML工具 万彩办公大师PDF转HTML工具实现PDF到HTML文档的批量转换.点击"转换"按钮即可进行多个文件同时转换,对于PDF文件内容.排版以及样式等元素,都能 ...

  7. 【办公常用软件】万彩办公大师教程丨PDF合并工具帮助文档

    PDF合并工具是一款简单.快捷的桌面应用程序,可以合并两个或多个图像/PDF格式文件至一个PDF文档中.生成的文档能兼容 Adobe Acrobat Reader 5 或更高版本. 使用PDF合并工具 ...

  8. 使用LEADTOOLS文档比较工具比较文档和图像

    LEADTOOLS Recognition Imaging SDK是精选的LEADTOOLS SDK功能集,旨在在企业级文档自动化解决方案中构建端到端文档成像应用程序,这些解决方案需要OCR,MICR ...

  9. 自己开发的加密工具---照片文档加密器

    自己开发的工具 软件名:照片文档加密器 软件大小:16KB 软件语言:简体中文 软件性质:免费软件 联系人:ys_ck#163.com 下载地址:http://kfysckgraph.sinaapp. ...

最新文章

  1. 静态Web服务器-返回固定页面数据
  2. 如果当前没有拿得出手的简历,也别慌,努力的话最多两年情况就能改变
  3. 组件(2):使用Prop下发数据
  4. I/O事件处理模型之Reactor和Proactor 【转】
  5. python web开发环境_Flask_Web 开发环境搭建
  6. EndDialog和CDialog::OnOK()
  7. C++编程经验总结1
  8. Fiddler 十分钟最全使用介绍
  9. P4884-多少个1?【BSGS】
  10. 1043 输出PATest(PAT乙级 C++)
  11. Golang的协程池设计
  12. java 和 Android Base64加密,java开发面试笔试题
  13. 【Spring】Spring的AOP术语解释
  14. SQL SERVER自带调试工具SQL Server Profiler简单用法
  15. 三国演义词云的python代码_词云制作没那么难,Python 10 行代码就实现了!
  16. php解析定时任务格式,php 实现定时任务简单实现
  17. 专线维护 07/11
  18. 联想数据中心技术总监单奖定:双态IT -数字化转型下的IT建设新思路
  19. slk文件转换器安卓版_【更新】手机QQ、微信语音读取转换工具【sik\amr格式转mp3】...
  20. Python爬取新浪足球数据(以中超为例)

热门文章

  1. 华为设备配置RSVP-TE摘要刷新(手工TE FRR)
  2. Amazon多账号运营需要注意哪些问题
  3. Ventuz学习笔记之-Container预制体等间距排列复制
  4. 运行循环(Run Loops)
  5. 小程序getApp() 被删除坑
  6. 小程序 getApp扫码体验获取不到值
  7. 开源DNS服务器与安装配置
  8. Chrome升级91扩展程序报错Tabs cannot be edited right now (user may be dragging a tab)解决方法
  9. com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.jso
  10. 太离谱!论文“撞衫”,11篇不同高校论文中竟出现同一块桌布....