加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

RestTemplate异常no suitable HttpMessageConverter found for r

发布时间:2020-12-15 01:11:20 所属栏目:大数据 来源:网络整理
导读:?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.SimpleClientHttpRequestFactor

?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();
    }

}

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读