/** * File类型对象 */@Post(url = "/upload")Map upload(@DataFile("file") File file, OnProgress onProgress);/** * byte数组 * 使用byte数组和Inputstream对象时一定要定义fileName属性 */@Post(url = "/upload")Map upload(@DataFile(value = https://www.isolves.com/it/cxkf/kj/2022-10-27/"file", fileName = "${1}") byte[] bytes, String filename);/** * Inputstream 对象 * 使用byte数组和Inputstream对象时一定要定义fileName属性 */@Post(url = "/upload")Map upload(@DataFile(value = "file", fileName = "${1}") InputStream in, String filename);/** * Spring Web MVC 中的 MultipartFile 对象 */@PostRequest(url = "/upload")Map upload(@DataFile(value = "file") MultipartFile multipartFile, OnProgress onProgress);/** * Spring 的 Resource 对象 */@Post(url = "/upload")Map upload(@DataFile(value = "file") Resource resource);(2)多文件批量上传
/** * 上传Map包装的文件列表 * 其中 ${_key} 代表Map中每一次迭代中的键值 */@PostRequest(url = "/upload")ForestRequest<Map> uploadByteArrayMap(@DataFile(value = https://www.isolves.com/it/cxkf/kj/2022-10-27/"file", fileName = "${_key}") Map(3)下载
/** * 在方法上加上@DownloadFile注解 * dir属性表示文件下载到哪个目录 * filename属性表示文件下载成功后以什么名字保存,如果不填,这默认从URL中取得文件名 * OnProgress参数为监听上传进度的回调函数 */@Get(url = "http://localhost:8080/images/xxx.jpg")@DownloadFile(dir = "${0}", filename = "${1}")File downloadFile(String dir, String filename, OnProgress onProgress);调用下载接口以及监听上传进度的代码如下:
File file = myClient.downloadFile("D:\TestDownload", progress -> {System.out.println("total bytes: " + progress.getTotalBytes());// 文件大小System.out.println("current bytes: " + progress.getCurrentBytes());// 已下载字节数System.out.println("progress: " + Math.round(progress.getRate() * 100) + "%");// 已下载百分比if (progress.isDone()) {// 是否下载完成System.out.println("--------Download Completed!--------");}});如果您不想将文件下载到硬盘上,而是直接在内存中读取,可以去掉@DownloadFile注解,并且用以下几种方式定义接口:
/** * 返回类型用byte[],可将下载的文件转换成字节数组 */@GetRequest(url = "http://localhost:8080/images/test-img.jpg")byte[] downloadImageToByteArray();/** * 返回类型用InputStream,用流的方式读取文件内容 */@GetRequest(url = "http://localhost:8080/images/test-img.jpg")InputStream downloadImageToInputStream();4.2.5 其它使用Cookie、使用代理、自定义注解、模板表达式······
本文档部分内容摘自官方文档,具体详情可参见:Forest官网:http://forest.dtflyx.com/
注:
笔者写了一个基于Springboot的demo(Maven项目),分别采用Forest、HttpClient、Okhttp三种方式调用高德地图API,Forest中还包括拦截器的使用、下载图片等示例,项目具体目录结构如下图所示,包括Forest、HttpClient、Okhttp三部分:

文章插图

文章插图
使用Postman进行测试:

文章插图
推荐阅读
- 七里河|老者用这款“神饵”在七里河钓鱼,让他成为整条河最靓的“仔”
- 无刘海短发图片
- 安热沙|这款防晒霜真的好,夏天别人晒黑了我却没黑,没有安耐晒小金瓶
- 护肤品|护肤品真不是越贵越好,这款国产护肤品,价格便宜还超好用!
- 马云花18亿打造的这款车,销量惨不忍睹,你觉得这车怎么样?
- 抖音十大神曲排行榜
- 葛根鸡米汤怎么做?
- 洗发水|“清扬、阿道夫”用腻了?试试这款国货洗发水,虽平价却真心好用
- 帽子|李宁推出的这款服装是特色还是忘本?
- 只需4分钟轻松搞定减肥早餐
