微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.*;
 org.springframework.http.client.SimpleClientHttpRequestFactory;
 org.springframework.security.core.context.SecurityContextHolder;
 org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationDetails;
 org.springframework.web.client.DefaultResponseErrorHandler;
 org.springframework.web.client.RestTemplate;

 java.util.Arrays;
 java.util.Map;
 java.util.Set;

/**
 * RestTemplate请求工具类
 * Created by huangbaidong
 * 2017/10/22.
 */
public class RestTemplateRequestUtil {


    
     * GET请求
     * @param url
     *  params
     *  clazz
     *  <T>
     * @return
     */
    static <T> T getRequest(String url,Map<String,Object> params,Class<T> clazz) {
        return request(url,params,clazz,HttpMethod.GET);
    }

    
     * POST请求
     * static <T> T postRequest(String url,HttpMethod.POST);
    }


    
     * restTemplate请求,* 认设置了连接超时,请求超时时间
     *  url 请求地址
     *  params 请求参数
     *  clazz  返回结果类型
     * static <T> T request(String url,1)"> clazz,HttpMethod method) {
        return request(url,method,30000,20000);
    }

    
     * restTemplate请求
     *  readTimeout     请求响应超时时间
     *  connectTimeout  连接超时时间
     * int readTimeout,int connectTimeout) {

        RestTemplate restTemplate = new RestTemplate();

        //设置连接参数
        SimpleClientHttpRequestFactory requestFactory =  SimpleClientHttpRequestFactory();
        requestFactory.setReadTimeout(readTimeout);
        requestFactory.setConnectTimeout(connectTimeout);
        restTemplate.setRequestFactory(requestFactory);
        restTemplate.setErrorHandler( DefaultResponseErrorHandler());

        拿到access_toeken
        OAuth2AuthenticationDetails details = (OAuth2AuthenticationDetails) SecurityContextHolder.getContext().getAuthentication().getDetails();

        请求头
        HttpHeaders headers =  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,requestEntity,clazz);
        } else {
            httpentity requestEntity = new httpentity(,1)"> restTemplate.exchange(appendParams(url,params.keySet()),params);
        }
         responseEntity.getBody();
    }


    
     * 将参数追加到URL后边
     *  keys
     * @return
     * @author: huangbaidong
     * @Description: Todo
     * : String
     private static String appendParams(String url,Set<?> keys) {
        StringBuilder sb =  StringBuilder(url);
        if(url.contains("?")) {
            sb.append("&");
        }  {
            sb.append("?");
        }
        for (Object key : keys) {
            sb.append(key).append("=").append("{").append(key).append("}").append("&"return sb.deleteCharat(sb.length() - 1).toString();
    }

}

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐