restTemplate 使用问题小记
使用restTemplate在后端进行接口转发, 期间包括文件上传, 预览和下载. 还有一些字符串或css/js文件的读取.
1. 文件上传
参考: RestTemplate转发MultipartFile
LinkedMultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
params.add("file", file.getResource());
// headers转发token等参数
// httpMethod 之前的请求方法
return new RequestEntity<>(params, headers, httpMethod, new URI(url));
2. 文件预览和下载
之前是使用Object接收
restTemplate.exchange(requestEntity, Object.class);
在返回文件和text时候会有HttpMessageNotWritableException异常
可参考: 被坑过后才知道学习HttpMessageConverter有多重要 或 被坑過後才知道學習HttpMessageConverter有多重要 中的方式3.
或者使用byte[]接收
restTemplate.exchange(requestEntity, byte[].class);
3. 转发请求后的结果中添加内容(业务需求)
之前使用Object接收的话
Map<String, Object> resultMap = BeanUtil.beanToMap(responseEntity.getBody(), false, false);
如果使用byte[], 需要涉及到字节数组转对象, 其实需要字节转字符串, 再转对象即可
参考: java中字节数组与对象之间的转换
Map<Object, Object> resultMap = JSONUtil.toBean(new String(responseEntity.getBody()), Map.class);
restTemplate 使用问题小记的更多相关文章
- HttpClient的替代者 - RestTemplate
需要的包 ,除了Spring的基础包外还用到json的包,这里的数据传输使用json格式 客户端和服务端都用到一下的包 <!-- Spring --> <dependency> ...
- RestTemplate发送请求并携带header信息
1.使用restTemplate的postForObject方法 注:目前没有发现发送携带header信息的getForObject方法. HttpHeaders headers = new Http ...
- [原]Paste.deploy 与 WSGI, keystone 小记
Paste.deploy 与 WSGI, keystone 小记 名词解释: Paste.deploy 是一个WSGI工具包,用于更方便的管理WSGI应用, 可以通过配置文件,将WSGI应用加载起来. ...
- 【Spring-web】RestTemplate源码学习——梳理内部实现过程
2016-12-28 by 安静的下雪天 http://www.cnblogs.com/quiet-snowy-day/p/6228198.html 提示:使用手机浏览时请注意,图多费流量. 本篇 ...
- MySql 小记
MySql 简单 小记 以备查看 1.sql概述 1.什么是sql? 2.sql发展过程? 3.sql标准与方言的关系? 4.常用数据库? 5.MySql数据库安装? 2.关键概念 表结构----- ...
- Git小记
Git简~介 Git是一个分布式版本控制系统,其他的版本控制系统我只用过SVN,但用的时间不长.大家都知道,分布式的好处多多,而且分布式已经包含了集中式的几乎所有功能.Linus创造Git的传奇经历就 ...
- 广州PostgreSQL用户会技术交流会小记 2015-9-19
广州PostgreSQL用户会技术交流会小记 2015-9-19 今天去了广州PostgreSQL用户会组织的技术交流会 分别有两个session 第一个讲师介绍了他公司使用PostgreSQL-X2 ...
- 东哥读书小记 之 《MacTalk人生元编程》
一直以来的自我感觉:自己是个记性偏弱的人.反正从小读书就喜欢做笔记(可自己的字写得巨丑无比,尼玛不科学呀),抄书这事儿真的就常发生俺的身上. 因为那时经常要背诵课文之类,反正为了怕自己忘记, ...
- 【Spring-web】RestTemplate源码学习
2016-12-22 by 安静的下雪天 http://www.cnblogs.com/quiet-snowy-day/p/6210288.html 前言 在Web开发工作中,有一部分开发任务 ...
- Paypal支付小记
Paypal支付小记 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !impo ...
随机推荐
- DICOM-SCP,可以直接使用的SCP(.net framework 4.5)控制台接收端
此程序引用的是Dicom.Core 4.0.8.0,也是最后一版支持部署在.net framework 4.5 或以下环境的.如需要部署在.net4.6.1以上的需要查看另一个文档. 1 using ...
- 提升质量:利用Coverage分析Python Web项目的测试覆盖
提升质量:利用Coverage分析Python Web项目的测试覆盖 鉴于不同框架的运行机制各有差异,当利用Coverage工具对Python Web项目的测试覆盖率进行分析时,必须采取针对性的方法来 ...
- [记录点滴] OpenResty中Redis操作总结
[记录点滴] OpenResty中Redis操作总结 0x00 摘要 本文总结了在OpenResty中的操作,与大家分享,涉及知识点为Openresty, Lua, Redis. 0x01 操作记录 ...
- Q:以非root用户编辑定时任务报错You are not allowed to use this program(crontab)
编辑定时删除文件任务时报错 crontab -e 编辑定时任务时报错,如下图所示 问题原因:/etc/cron.allow中没有添加对应的用户名解决办法:切换到root用户,在/etc/cron.al ...
- Atcoder [AGC006D] Median Pyramid Hard 题解 [ 紫 ] [ 二分 ] [ adhoc ]
Median Pyramid Hard:二分 trick 加上性质观察题. trick 我们可以二分值域,然后把大于等于它的数标记成 \(1\),其他标记为 \(0\)(有些题需要标记成 \(-1\) ...
- CAD内核的奥秘 | 工业软件发展史 (转)
CAD内核的奥秘 | 工业软件发展史 (声明:此文非本人原著,仅供交流,如果侵犯到原作者权利,立即删除) 如果一个产业要寻根,就会发现一个万千世界,最后会聚焦到一个点上. "一沙一世界&qu ...
- vue路由$router.push()的三种传参方式
- java stream sorted排序 考虑null值
项目里使用到排序, java里没有像C# 里的linq,只有stream,查找stream.sorted源码看到有个 Comparator.nullsLast 然后看了一下实现,果然是能够处理null ...
- Java微信小程序登录接口获取openid
根据官方文档,wx.login()的回调函数中,需要我们传递生成的用户登录凭证到code2accessToken的接口中 小程序登录方法 code2accessToken的方法中要求传入如下参数 ...
- 飞牛 fnos 使用docker部署NapCat-QQ对接autman教程
NapCatQQ介绍 无需图形环境,在Linux上表现出色,与现有Hook框架有本质区别,性能与内存占用优于基于Hook的框架. 配置简单,支持浏览器远程配置. NTQQ功能适配快速,持续跟进QQ最新 ...