RestTemplate异常no suitable HttpMessageConverter found for request type [java.lang.Integer]
GET方式,参数必须放在URL后面,http://xxx/list?name={name}&age={age}
package com.chelizi.xiruo.xframework.util; import net.sf.json.JSONObject;
import org.springframework.http.*;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationDetails;
import org.springframework.web.client.DefaultResponseErrorHandler;
import org.springframework.web.client.RestTemplate; import java.util.Arrays;
import java.util.Map;
import java.util.Set; /**
* RestTemplate请求工具类
* Created by huangbaidong
* 2017/10/22.
*/
public class RestTemplateRequestUtil { /**
* GET请求
* @param url
* @param params
* @param clazz
* @param <T>
* @return
*/
public static <T> T getRequest(String url, Map<String, Object> params, Class<T> clazz) {
return request(url, params, clazz, HttpMethod.GET);
} /**
* POST请求
* @param url
* @param params
* @param clazz
* @param <T>
* @return
*/
public static <T> T postRequest(String url, Map<String, Object> params, Class<T> clazz) {
return request(url, params, clazz, HttpMethod.POST);
} /**
* restTemplate请求,
* 默认设置了连接超时,请求超时时间
* @param url 请求地址
* @param params 请求参数
* @param clazz 返回结果类型
* @param <T>
* @return
*/
public static <T> T request(String url, Map<String, Object> params, Class<T> clazz, HttpMethod method) {
return request(url, params, clazz, method,30000, 20000);
} /**
* restTemplate请求
* @param url 请求地址
* @param params 请求参数
* @param clazz 返回结果类型
* @param readTimeout 请求响应超时时间
* @param connectTimeout 连接超时时间
* @param <T>
* @return
*/
public static <T> T request(String url, Map<String, Object> params, Class<T> clazz,
HttpMethod method,int readTimeout, int connectTimeout) { RestTemplate restTemplate = new RestTemplate(); //设置连接参数
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setReadTimeout(readTimeout);
requestFactory.setConnectTimeout(connectTimeout);
restTemplate.setRequestFactory(requestFactory);
restTemplate.setErrorHandler(new DefaultResponseErrorHandler()); //拿到access_toeken
OAuth2AuthenticationDetails details = (OAuth2AuthenticationDetails) SecurityContextHolder.getContext().getAuthentication().getDetails(); //请求头
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
headers.add("Authorization", "bearer "+details.getTokenValue()); //发起请求
ResponseEntity<T> responseEntity = null;
if(HttpMethod.POST.equals(method)) {
JSONObject jsonParams = JSONObject.fromObject(params);
HttpEntity<JSONObject> requestEntity = new HttpEntity<JSONObject>(jsonParams, headers);
responseEntity = restTemplate.exchange(url, method, requestEntity, clazz);
} else {
HttpEntity requestEntity = new HttpEntity(null, headers);
responseEntity = restTemplate.exchange(appendParams(url, params.keySet()), method, requestEntity, clazz, params);
}
return responseEntity.getBody();
} /**
* 将参数追加到URL后边
* @param url
* @param keys
* @return
* @author: huangbaidong
* @Description: TODO
* @return: String
*/
private static String appendParams(String url, Set<?> keys) {
StringBuilder sb = new StringBuilder(url);
if(url.contains("?")) {
sb.append("&");
} else {
sb.append("?");
}
for (Object key : keys) {
sb.append(key).append("=").append("{").append(key).append("}").append("&");
}
return sb.deleteCharAt(sb.length() - 1).toString();
} }
RestTemplate异常no suitable HttpMessageConverter found for request type [java.lang.Integer]的更多相关文章
- no suitable HttpMessageConverter found for request type [java.lang.Integer]
今天在使用Spring Template的时候遇到了这个异常: no suitable HttpMessageConverter found for request type [java.lang.I ...
- Validation异常:No validator could be found for constraint '.....' validating type 'java.lang.Integer'.
javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'java ...
- Java 异常 Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date'
查询时发送给服务器的日期的字符串格式:yyyy-MM-dd HH:mm:ss 服务器接收到日期的字符串之后,向 MySQL 数据库发起查询时,因为没有指定日期时间格式,导致字符串数据不能正确地转换为日 ...
- no suitable HttpMessageConverter found for response type
在使用 RestTemplate 或者 Spring Cloud 的时候,经常会出现这个错误. 基本上出现的场景都是,我们要json,结果来了个 text/html. 两个原因: 第一个就是:服务器返 ...
- 关于jstl中碰到的Property 'username' not found on type java.lang.String异常
在jstl的forEach循环的时候总是有异常,刚开始以为是把类的属性名打错了,因为显示的是Property not found,但就算从类文件里面复制属性名过来依然显示的是Property not ...
- Struts2环境下Tomcat启动异常:Exception starting filter struts2,报了一个java.lang.ClassNotFoundException
在写一个struts2+hibernate整合的小例子时,启动Tomcat服务器,报了一个: 严重: Exception starting filter struts2java.lang.ClassN ...
- Java EE之Struts2异常[No mapping found for dependency [type=java.lang.String, name='actionPackages'#java.lang.RuntimeException]【摘抄】
本博文摘自:http://www.blogjava.net/nkjava/archive/2009/03/29/262705.html 出现这个问题,可能是添加了struts2-codebehind包 ...
- MySQL分段统计SQL写法 与 Mybatis 异常 java.math.BigDecimal cannot be cast to java.lang.Integer
mysql> select end) as '<60', end) as '60~69', end) as '70~79', end) as '80~89', end) as '>= ...
- 【java异常】Unexpected error occurred in scheduled task. java.lang.StackOverflowError: null
可能是栈溢出(StackOverFlow) 背景:我用定时器new东西 原因:频率太快了好像!
随机推荐
- Nginx 反向代理解决favicon404错误问题
# set site favicon location /favicon.ico { root html; } OR location = /favicon.ico { log_not_found o ...
- [OpenCV] IplImage and Operation
IplImage 一.资源 In this chapter, APIs will make U crazy. Good luck! Next, Review Linear Algebra. Ref: ...
- ios7注意事项随笔
1,修改状态栏的样式和隐藏. 首先,需要在Info.plist配置文件中,增加键:UIViewControllerBasedStatusBarAppearance,并设置为YES: 然后,在UIVie ...
- php 应用 bootstrap-fileinput 上传文件 插件 操作的方法
//先加载插件所需要的 js .css 文件 <link href="css/fileinput.css" rel="stylesheet" type=& ...
- Java实现策略模式的简单应用
在使用图像处理软件处理图片后,需要选择一种格式进行保存.然而各种格式在底层实现的算法并不相同,这刚好适合策略模式.编写程序,演示如何使用策略模式与简单工厂模式组合进行开发. 思路如下: 使用inter ...
- SSL延迟有多大 (Https)
据说,Netscape公司当年设计SSL协议的时候,有人提过,将互联网所有链接都变成HTTPs开头的加密链接. 这个建议没有得到采纳,原因之一是HTTPs链接比不加密的HTTP链接慢很多.(另一个原因 ...
- Android实现图片缩放示例
package com.example.demo; import android.os.Bundle; import android.app.Activity; import android.grap ...
- iOS开发--UILabel可以显示\n
UILabel*label; //设置换行 label.lineBreakMode = UILineBreakModeWordWrap; label.numberOfLines = ; 换行符还是“\ ...
- TOMCAT可以稳定支持的最大并发用户数
转自:http://blog.sina.com.cn/s/blog_68b7d2f50101ann7.html 服务器配置: 单硬盘,SATA 8MB缓存 测试服务器和loadrunner运行服务 ...
- linux文件和目錄管理的基本命令命令
ls命令 作用:顯示目標列表或目錄的內容 語法:ls[選項][目錄或文件] -a:顯示指定目錄下所有子目錄與文件,包括隱藏文件 -l:顯示文件的詳細信息 -d: 顯示目錄 例:ls -dl cd命令 ...