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

  1. no suitable HttpMessageConverter found for request type [java.lang.Integer]

    今天在使用Spring Template的时候遇到了这个异常: no suitable HttpMessageConverter found for request type [java.lang.I ...

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

  3. Java 异常 Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date'

    查询时发送给服务器的日期的字符串格式:yyyy-MM-dd HH:mm:ss 服务器接收到日期的字符串之后,向 MySQL 数据库发起查询时,因为没有指定日期时间格式,导致字符串数据不能正确地转换为日 ...

  4. no suitable HttpMessageConverter found for response type

    在使用 RestTemplate 或者 Spring Cloud 的时候,经常会出现这个错误. 基本上出现的场景都是,我们要json,结果来了个 text/html. 两个原因: 第一个就是:服务器返 ...

  5. 关于jstl中碰到的Property 'username' not found on type java.lang.String异常

    在jstl的forEach循环的时候总是有异常,刚开始以为是把类的属性名打错了,因为显示的是Property not found,但就算从类文件里面复制属性名过来依然显示的是Property not ...

  6. Struts2环境下Tomcat启动异常:Exception starting filter struts2,报了一个java.lang.ClassNotFoundException

    在写一个struts2+hibernate整合的小例子时,启动Tomcat服务器,报了一个: 严重: Exception starting filter struts2java.lang.ClassN ...

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

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

  9. 【java异常】Unexpected error occurred in scheduled task. java.lang.StackOverflowError: null

    可能是栈溢出(StackOverFlow) 背景:我用定时器new东西 原因:频率太快了好像!

随机推荐

  1. QT运行出错:QObject::connect: Parentheses expected以及QObject::connect: No such slot ***

    我在QGraphicsScene子类中添加了item的弹出菜单,并连接Action到槽函数,结果槽函数不起作用,输出:QObject::connect: No such slot ***  C++ C ...

  2. ios利用Reachability确认网络环境3G/WIFI(转)

    iPhone开发技巧之网络篇(4)--- 确认网络环境  开发Web等网络应用程序的时候,需要确认网络环境,连接情况等信息.如果没有处理它们,是不会通过Apple的审查的. Apple 的 例程 Re ...

  3. iOS AppsFlyer的使用注意事项

    AppFlyer 是近期比較火的一款广告追踪统计工具,当然统计的功能友盟也能够实现,而appsflyer更是具有定向投放,是app跳转到对应的页面. 详细的:当点击广告的时候,假设没有安装应用.则会跳 ...

  4. Servlet入门总结及第一个Servlet程序

    目录 一了解Servlet的概念 二Servlet技术功能 三 Servlet技术特点 四 Servlet生命周期 五servlet工作过程 六 Servlet与JSP区别 七Servlet代码结构 ...

  5. cocos2d-x 3.0 在C++中调用lua函数

    代码用的是<cocos2d-x 3.0 在lua中调用自定义类>中的代码. 在上篇的基础上进行扩充. 写lua函数 local function process_packet(user_d ...

  6. python --help查询python相关命令

    C:\Users\lenovo>python --help usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ... O ...

  7. iOS开发-为UITableViewCell添加横线

    在开发过程中经常会遇到设计稿中Cell分割线样式和系统自带的样式差别很大,如何实现这里做下总结,主要包括如下两步: 1. 取消TableView默认的分割线样式 _tableView.separato ...

  8. (转)作为一个新人,怎样学习嵌入式Linux?(韦东山)

    被问过太多次,特写这篇文章来回答一下.   在学习嵌入式Linux之前,肯定要有C语言基础.汇编基础有没有无所谓(就那么几条汇编指令,用到了一看就会).C语言要学到什么程度呢?越熟当然越好,不熟的话也 ...

  9. 一个简单的demo学习Android远程Service(AIDL的使用)

    这是milo很早之前写在论坛上的一个帖子,现在整理出来,milo也复习一下一般来说Android 的四大组件都是运行在同一个进程中的,但远程Service运行在不同的进程里.这进程间的通信是使用了An ...

  10. [NodeJS] Node.js 与 V8 的故事

    要说Node.js的历史,就不得不说说V8历史.在此之前我们先一句话描述一下什么是Node.js:Node.js是一个基于Google Chrome V8 Javascript引擎之上的平台,用以创建 ...