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请求的更多相关文章

  1. java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to

    在做android解析服务器传来的json时遇到的错误. 服务器传来的数据格式 [{"," id":"7ef6815938394fce88a5873312b66 ...

  2. 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方法时,如果它的属性里面包含 ...

  3. SSH整合时执行hibernate查询报错:java.lang.ClassCastException: com.ch.hibernate.Department_$$_javassist_0 cannot be cast to javassist.util.proxy

    今天在整合ssh三个框架时,有一个功能,是查询所有员工信息,且员工表和部门表是多对一的映射关系,代码能正常运行到查询得到一个List集合,但在页面展示的时候,就报异常了, java.lang.Clas ...

  4. 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 ...

  5. 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的代码没有考虑到并发的情况 ...

  6. 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 ...

  7. 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: ...

  8. 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 ...

  9. 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 ...

  10. java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast

    严重: Exception starting filter encodingFilterjava.lang.ClassCastException: org.springframework.web.fi ...

随机推荐

  1. 如何用Netty写一个高性能的分布式服务框架?

    简介: Netty 是一个致力于创建高性能网络应用程序的成熟的 IO 框架.相比较与直接使用底层的 Java IO API,不需要先成为网络专家就可以基于 Netty 去构建复杂的网络应用.业界常见的 ...

  2. embedding models 是什么

    embedding models 是一类机器学习模型,它们的核心功能是将高维.离散的输入数据(如词汇.类别标签.节点或实体)映射到低维.连续的向量空间中. 这些向量(即 embeddings)通常具有 ...

  3. JavaScript之变量解构赋值的使用

    引言 解构赋值是ES6中引入的一种能快速方便的进行变量赋值的方法,其主要也就是分为解构和赋值两部分内容.解构者,也就是匹配结构,然后分解结构进行赋值. 数组的解构赋值 使用 const arr = [ ...

  4. HttpClient配置SSL绕过https证书以及双向认证

    HttpClient简介 1.HTTP 协议是 Internet 上使用得最多.最重要的协议之一,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源.虽然在 JDK 的 java ...

  5. 简说Python之函数

    目录 Python的函数 函数的简单调用 函数传参 返回值 计算圆形面积 变量作用域 局部变量 全局变量 就像平时玩的积木,函数就是一个个成块的积木,可以组合你想要的任何形状. Python的函数 函 ...

  6. 02 elasticsearch学习笔记-ES核心概念

    一. 前序 sh Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎.无论在开源还是专有领域,Lucene 可以被认为是迄今为止最先进.性能最好的.功能最全的搜索引擎 ...

  7. ansible系列(29)--ansible的Jinja2语法及应用

    目录 1. Ansible Jinja2 1.1 jinja2语法结构 1.2 jinja2中{{ }}中的运算符 1.3 jinja2中for循环和if判断示例 1.4 Jinja2管理Nginx负 ...

  8. 【工程实践】go语言实现MerkleTree

    简介 默克尔树(MerkleTree)是一种典型的二叉树结构,其主要特点为: 最下面的叶节点包含存储数据或其哈希值: 非叶子节点(包括中间节点和根节点)的内容为它的两个孩子节点内容的哈希值. 所以底层 ...

  9. ContextCapture中的模型航拍方法和技巧

    在进行实景建模之前,获取被拍摄物体的照片是很重要的一项工作,因为如果没有按照规则拍摄或者拍摄相片质量不佳,将会直接影响我们后期建模,甚至无法建模. 我们建议使用ContextCapture进行建模,则 ...

  10. inno Setup 打包Java exe可执行文件和MySQL数据库,无需额外配置实现一键傻瓜式安装

    前言 出现有需要打包 Java 应用和 Mysql数据库成一个安装包给出去的需求,这里我把整个打包的流程整理一下. 环境 JDK17; MySQL 5.7; 流程 Jpackage打包EXE Jpac ...