远程调用RestTemplate使用避坑指南
一、前言介绍
RestTemplate是Spring中用于远程接口调用的工具类,它是Apache的HttpClient的模板封装,使用起来非常方便,本文将讲述这两天自己在使用RestTemplate过程中遇到的问题,当然这些问题也是由于自己对RestTemplate工具类了解不够全面不够透彻造成的,希望自己遇到的这些问题能为大家提前避雷或是遇到类似问题时的一个解决参考。
二、 问题记录
1. 慎!【url参数中有json字符串】
在使用RestTemplate进行远程接口调用时,如果url拼接参数中json字符串时一定要小心,使用场景如下:利用restTemplate调用user的查询信息接口,url中的一个参数user为json字符串格式{\"user\":\"xiaoming,\"age\":"12"}
// JSON参数Map<String, String> paramMap = new HashMap<>(8);paramMap.put("name","xiaoming");paramMap.put("age","12");String paramJsonStr = JSONObject.toJSONString(paramMap);// 实际参数 url = "http://localhost:8080/api/user?user={\"name\":\"xiaoming\",\"age\":\"12\"}&country=china";String url = "http://localhost:8080/api/user?user=" + paramJsonStr + "&country=china";RestTemplate restTemplate = new RestTemplate();// 调用出错Object execute = restTemplate.execute(url, HttpMethod.GET, null, null);
此时当我们运行程序时会抛出以下错误:
错误意思大概是没有足够可用的变量值来填充扩展 'name',这是什么鬼意思,别着急让我们跟跟代码看看异常抛出的位置,最终定位如下,在创建URI过程中调用了 UriComponents.expandUriComponent()方法抛出异常:
远程调用RestTemplate使用避坑指南相关推荐
- 自由职业者和远程工作者避坑指南
说到自由工作和远程工作,你应该不会陌生,至少听过,甚至已经经历过.尤其是 2020 年,在疫情的影响下,全国上下很多企事业单位,尤其是互联网相关行业,均启动了远程工作模式,你又有何体会呢? 如果笼统来 ...
- HarmonyOS 开发避坑指南
Harmony OS 开发避坑指南--源码下载和编译 本文介绍了如何下载鸿蒙系统源码,如何一次性配置可以编译三个目标平台(Hi3516,Hi3518和Hi3861)的编译环境,以及如何将源码编译为三个 ...
- 17条避坑指南:一份来自谷歌的数据库经验贴
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | https://medium.com/@rak ...
- Serverless 时代前端避坑指南
作者 | 张挺 每个时代,从来不缺机会. 云原生的浪潮席卷而来,从 14 年到现在,上云的声音就没有停歇过,而如今到了 2020,云厂商都已经准备好了,而前端,是否也准备好踏入这纷争的领域,去拥抱时代 ...
- dubbo日志关闭_不可忽视的Dubbo线程池避坑指南
推荐阅读: 阿里巴巴4面Java岗位:算法+性能调优+并发+多线程+数据库 Dubbo+Kafka+MyBatis+reids+Spring+多线程等,学完就去面试BAT 问题描述 线上突然出现Dub ...
- 罗技无线网卡linux,Linux(Ubuntu)装罗技LMS避坑指南
Linux(Ubuntu)装罗技LMS避坑指南 前言:搜索音质好的播放软件时发现MPD竟然可以直接命令行操作.连界面都是在终端里的.满满的极客范,心动.搞起!结果-搞了几个小时.各种折腾.就是读取不到 ...
- IDEA工具避坑指南(七):git@github.com: Permission denied|You must supply a key in OpenSSH public key format详解
错误描述 用IDEA通过版本控制器从GitHub拉取目项时,出现下述错误 错误一:IDEA clone项目时,控制台错误: Cloning into 'gitidea'... git@github ...
- Android避坑指南,Gson与Kotlin碰撞出一个不安全的操作
本文已经授权「鸿洋」公众号原创首发. 最近发现微信多了个专辑功能,可以把一系列的原创文章聚合,刚好我每周都会遇到很多同学问我各种各样的问题,部分问题还是比较有意义的,我会在周末详细的写demo验证,简 ...
- HarmonyOS实战 —基于hi3861芯片鸿蒙2.0的避坑指南
HarmonyOS实战 -基于hi3861芯片鸿蒙2.0的避坑指南 特别说明:本文章与卡片开发无关,想看卡片开发的不用往下读了 最近学习鸿蒙设备开发的过程中遇到了很多问题,因为目前几乎所有设备开发教程 ...
最新文章
- Android 中文API (94) —— MediaController
- 揭晓飞桨平台提速秘诀:INT8量化加速实现“事半功倍”
- ajax在项目中怎么使用,我如何添加项目在sql中使用jQuery(ajax)通过web服务
- MPLS是如何工作?MPLS的完整指南和常见问题解答
- Winform Textbox实现滚动条始终在最下面
- android不能使用udp获取数据解决
- 阿里云双11全球狂欢节 计算资源买买买
- 信息技术上册教案了解计算机,信息技术上册全册教案
- Linux 打印可变参数日志
- linux 中断 进程,linux中断分上下部分原因
- redis订阅怎么退出_关于redis,学会这8点就够了
- test dword ptr [eax],eax ; probe page.
- High performance find query using lean() in mongoose
- java输出希腊字符表,希腊字母unicode表
- awvs 中文手册详细版
- 有哪些不错的数学、物理类的「闲书」?
- android 多媒体播放 MediaSession 框架
- 基因和疾病:缺陷、脱轨以及妥协
- 【有料c++题目周刊 | 第四期】贝克街神探
- Swift 编程语言教程(官方文档)
热门文章
- 项目实施过程中的优化建议
- 分布式事务专题-基本概念
- wheelCollider
- 电脑录屏的视频保存在哪里?您可以这样查看
- 计算机网络 day6 arp病毒 - ICMP协议 - ping命令 - Linux手工配置IP地址
- golang leaf调试Game、Login模块收发信息
- SpringCloud升级之路2020.0.x版-41. SpringCloudGateway 基本流程讲解(3)
- herl工具解决微信中下载APP
- zzuli OJ 1105: 判断友好数对(函数专题)
- Linux 时钟同步服务关于服务端器和客户端的设置