post请求 restTemplate.postForObject restTemplate.postForEntity java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to xxx POSTpost请求
1.restTemplate调用的两种方式及获取字符串转换对象model的处理,统一按接收字符串,然后gson转换为对象的方式。
ResponseData对象包含的属性
private String resCode;
private String resMsg;
private T data;
import java.lang.reflect.Type;
import com.google.common.reflect.TypeToken;
import com.google.gson.Gson;
@Test
public void testPost1() {
String url = "http://IP:PORT/";
String memNo = "111";
ReqVO reqVo = new ReqVO();
reqVo.setMemNo(memNo);
String json = restTemplate.postForObject(url, reqVo, String.class);
log.info("string = " + json); //java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to xxx
// ResponseData<OpenInfoStatusVO> responseEntity = new Gson().fromJson(json, ResponseData.class); //这个是关键
Type type = new TypeToken<ResponseData<MyResponseInfoStatusVO>>() {}.getType(); ResponseData<MyResponseInfoStatusVO> responseEntity = new Gson().fromJson(json, type); if (responseEntity == null || responseEntity.getData() == null) {
log.info("postForEntity null,params memNo=[{}]",memNo);
}else {
MyResponseInfoStatusVOstatusVo = (MyResponseInfoStatusVO) responseEntity.getData();
log.info("postForEntity ok,result=[{}],params memNo=[{}]",GsonUtils.toJson(statusVo),memNo); }
}
import java.lang.reflect.Type;
import com.google.common.reflect.TypeToken;
import com.google.gson.Gson; @Test
public void testPost2() {
String url = "http://IP:PORT/";
String memNo = "222";
ReqVO reqVo = new ReqVO();
reqVo.setMemNo(memNo);
//区别点
ResponseEntity<String> response = restTemplate.postForEntity(url, reqVo, String.class);
log.info("string = " + GsonUtils.toJson(response)); //java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to xxx
// ResponseData<MyResponseInfoStatusVO> responseEntity = new Gson().fromJson(response.getBody(), ResponseData.class); //这个是关键
Type type = new TypeToken<ResponseData<MyResponseInfoStatusVO>>() {}.getType(); ResponseData<MyResponseInfoStatusVO> responseEntity = new Gson().fromJson(response.getBody(), type); if (responseEntity == null || responseEntity.getData() == null) {
log.info("postForEntity null,params memNo=[{}]",memNo);
}else {
MyResponseInfoStatusVOstatusVo = (MyResponseInfoStatusVO) responseEntity.getData();
log.info("postForEntity ok,result=[{}],params memNo=[{}]",GsonUtils.toJson(statusVo),memNo); }
}
2.
/**
* post请求方式 postForObject
* @return
*/
public String getToken() {
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
headers.setContentType(type);
headers.add("Accept", MediaType.APPLICATION_JSON.toString()); AuthTokenReqVo reqVo = new AuthTokenReqVo();
reqVo.setApp_id(id); HttpEntity<String> formEntity = new HttpEntity<>(JSON.toJSONString(reqVo), headers); String result = restTemplate.postForObject("http://ip:端口/toGetToken", formEntity, String.class); AuthTokenResVo resVo = JSON.parseObject(result, AuthTokenResVo.class);
if(resVo != null){
return resVo.getToken();
}
return "";
} /**
* post请求方式 postForEntity
* @return
*/
public String getToken() {
ResponseEntity<String> response = null; RestTemplate restTemplate = new RestTemplate(); AuthTokenReqVo reqVo = new AuthTokenReqVo();
reqVo.setApp_id(id); String reqJson = JSON.toJSONString(reqVo);
logger.info("AuthToken请求参数-response:[{}]", reqJson);
response = restTemplate.postForEntity("http://ip:端口/toGetToken", reqVo, String.class);
logger.info("AuthToken返回结果-response:[{}]", GsonUtils.toJson(response));
if (HttpStatus.OK == response.getStatusCode()) {
AuthTokenResVo resVo = JSON.parseObject(response.getBody(), AuthTokenResVo.class);
if(resVo != null){
return resVo.getToken();
}
}
return "";
}
post请求 restTemplate.postForObject restTemplate.postForEntity java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to xxx POSTpost请求的更多相关文章
- java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to
在做android解析服务器传来的json时遇到的错误. 服务器传来的数据格式 [{"," id":"7ef6815938394fce88a5873312b66 ...
- json解析出现:java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to XXX
感谢大佬:https://blog.csdn.net/one_ink/article/details/99817676 一.出错原因 当我们利用json解析中的toBean方法时,如果它的属性里面包含 ...
- SSH整合时执行hibernate查询报错:java.lang.ClassCastException: com.ch.hibernate.Department_$$_javassist_0 cannot be cast to javassist.util.proxy
今天在整合ssh三个框架时,有一个功能,是查询所有员工信息,且员工表和部门表是多对一的映射关系,代码能正常运行到查询得到一个List集合,但在页面展示的时候,就报异常了, java.lang.Clas ...
- java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter
java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast ...
- mybatis查询异常-Error querying database. Cause: java.lang.ClassCastException: org.apache.ibatis.executor.ExecutionPlaceholder cannot be cast to java.util.List
背景,mybatis查询的时候直接取的sqlsession,没有包装成SqlSessionTemplate,没有走spring提供的代理. 然后我写的获取sqlsession的代码没有考虑到并发的情况 ...
- java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to
Java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to 在使用JSONObject.toBe ...
- hive orc压缩数据异常java.lang.ClassCastException: org.apache.hadoop.io.Text cannot be cast to org.apache.hadoop.hive.ql.io.orc.OrcSerde$OrcSerdeRow
hive表在创建时候指定存储格式 STORED AS ORC tblproperties ('orc.compress'='SNAPPY'); 当insert数据到表时抛出异常 Caused by: ...
- spark提示Caused by: java.lang.ClassCastException: scala.collection.mutable.WrappedArray$ofRef cannot be cast to [Lscala.collection.immutable.Map;
spark提示Caused by: java.lang.ClassCastException: scala.collection.mutable.WrappedArray$ofRef cannot b ...
- Tomcat7出现HTTP Status 500 - java.lang.ClassCastException: org.apache.jasper.el.ELContextImpl cannot be cast to org.apache.jasper.el.ELContextImpl的解决
今天在Tomcat7上发布了一个war,过一阵子发现localhost:8080都进不去了.在浏览器输入http://localhost:8080出现如下内容: HTTP Status 500 - j ...
- java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast
严重: Exception starting filter encodingFilterjava.lang.ClassCastException: org.springframework.web.fi ...
随机推荐
- WPF 解决 ObservableCollection 提示 Cannot change ObservableCollection during a CollectionChanged event 异常
本文告诉大家在使用 ObservableCollection 时,抛出 InvalidOperationException 异常,提示 Cannot change ObservableCollecti ...
- 开发日志:企业微信实现扫码登录(WEB)
一:获取扫码登陆所需的参数:appid,secret,agentid 登录企业微信:https://work.weixin.qq.com/ 扫码登录文档:https://work.weixin.qq. ...
- LLM优化:开源星火13B显卡及内存占用优化
1. 背景 本qiang~这两天接了一个任务,部署几个开源的模型,并且将本地经过全量微调的模型与开源模型做一个效果对比. 部署的开源模型包括:星火13B,Baichuan2-13B, ChatGLM6 ...
- kali使用apt-get update 出现数字签名失效
kali使用apt-get update 出现数字签名失效 下载签名:wget archive.kali.org/archive-key.asc 安装签名:apt-key add archive-ke ...
- Docker 必知必会2----跟我一步步来执行基本操作
通过前文(https://www.cnblogs.com/jilodream/p/18177695)的了解,我们已经大致明白了什么是docker,为什么要用docker,以及docker的基本设计思路 ...
- 面向K-12学生的远程访问学校计算机实验室
为了应对新冠肺炎大流行,许多学校被迫采用远程学习和混合时间制度.在家学习的学生必须使用自己的个人设备或学校提供的设备(例如 Chromebook )来完成课堂作业. 尽管许多解决方案可以帮助学生和 ...
- C数据结构:哈夫曼树算法实现与应用
学习哈夫曼树(编码) 带权二叉树 认识WPL 最优二叉树 构造哈夫曼树的过程 哈夫曼树的应用 建立哈夫曼树 代码如下: 结构体代码部分 建立操作代码 找到最小结点(※难点) 附上建立哈夫曼树源代码 带 ...
- Intel HDSLB 高性能四层负载均衡器 — 快速入门和应用场景
目录 目录 目录 前言与背景 传统 LB 技术的局限性 HDSLB 的特点和优势 HDSLB 的性能参数 基准性能数据 对标竞品 HDSLB 的应用场景 HDSLB 的发展前景 参考文档 前言与背景 ...
- angular自定义验证器实现所遇到的问题
1:返回值问题 校验器 2:返回值类型 3:创建自定义指令配置注意 1:校验器 回过头来看一下表单校验的校验器.校验器共有两种,同步校验和异步校验,验证器函数接受一个control,然后返回一组错误对 ...
- 用pageOffice控件实现 office word文档 强制留痕编辑Word
OA办公中,业务需要多人编辑word文档,需要强制留痕功能,用来查看文档编辑过程中的具体修改痕迹. 怎么实现word文档的强制留痕呢? 1 实现方法 通过pageOffice实现简单的在线打开编辑wo ...