RestTemplate使用

创建线程安全的RestTemplate单例(懒汉模式)

@Component
@Lazy(false)
public class SimpleRestClient {

    private static final Logger LOGGER = LoggerFactory.getLogger(SimpleRestClient.class);

    private static RestTemplate restTemplate;

    static {
        SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
        requestFactory.setReadTimeout(5000);
        requestFactory.setConnectTimeout(5000);

        // 添加转换器
        List<HttpMessageConverter<?>> messageConverters = new ArrayList<>();
        messageConverters.add(new StringHttpMessageConverter(Charset.forName("UTF-8")));
        messageConverters.add(new FormHttpMessageConverter());
        messageConverters.add(new MappingJackson2HttpMessageConverter());

        restTemplate = new RestTemplate(messageConverters);
        restTemplate.setRequestFactory(requestFactory);
        restTemplate.setErrorHandler(new DefaultResponseErrorHandler());

        LOGGER.info("SimpleRestClient初始化完成");
    }

    private SimpleRestClient() {

    }

    @PostConstruct
    public static RestTemplate getClient() {
        return restTemplate;
    }

}

GET

1、带header的get

HttpHeaders headers = new HttpHeaders();
headers.add("ApiKey", token);
// 发送请求
ResponseEntity<String> exchange = restTemplate.exchange(
    url
    , HttpMethod.GET
    , new HttpEntity<String>(headers)
    , String.class);
String res = exchange.getBody();

POST

1、带header和body的post

RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
// 设置content-type
MediaType type = MediaType.parseMediaType("application/json;charset=UTF-8");
headers.setContentType(type);
// 设置请求头
headers.add("ApiKey", param.getStr("ApiKey"));
// 当没有请求头信息时,用  MultiValueMap<String, Object> map=new LinkedMultiValueMap<>();
// 当有请求头信息时,用 HashMap<String, Object> map = new HashMap<>();
HashMap<String, Object> body = new HashMap<>();
body.put("CustomerKey", param.getStr("CustomerKey"));
body.put("StartIndex", 0);// 开始条数
body.put("EndIndex", 1000);// 结束条数
//用HttpEntity封装整个请求报文
HttpEntity<HashMap<String, Object>> httpEntity = new HttpEntity<>(body, headers);

//服务端返回的json格式:
String result = restTemplate.postForObject(realTimeDataUrl, httpEntity, String.class);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值