zoukankan      html  css  js  c++  java
  • RestTemplate请求第三方接口添加Headers token及设置请求体

    一、restTemplate

    restTemplate是spring提供用于访问Rest的客户端,restTemplate提供了多种访问HTTP服务的方法,相比之前经常使用的Apache的HttpClient访问接口,RestTemplate更加简洁和高效。

    二、GET请求

    get请求一般为url带参,没有请求体

    其中,RestTemplate提供了三种请求http的方式:

    exchange
    getForObject
    getForEntity


    首先第一种,可以添加请求头Headers,设置请求参数,简易写法如下

     

     代码如下:

    @Service
    public class RestTemplateService {
    
        private static Logger logger = LoggerFactory.getLogger(RestTemplateService.class);
    
        @Autowired
        private RestTemplate restTemplate;
    
        public Map<String, Object> testGetRest(){
            Map<String, Object> result = new HashMap<>();
    
            String getUrl = "http://xxx.com/api?key1={value2}&key2={value2}";
            String assessToken = "......";
    
            MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
            params.add("key1", "value1");
            params.add("key2", "value2");
    
            HttpHeaders httpHeaders = new HttpHeaders();
            httpHeaders.add(HttpHeaders.AUTHORIZATION, "Barer " + assessToken);
            HttpEntity<String> httpEntity = new HttpEntity(null, httpHeaders);
            ParameterizedTypeReference<Map<String, Object>> responseType = new ParameterizedTypeReference() {
            };
            try{
                ResponseEntity<Map<String, Object>> responseEntity = restTemplate.exchange(getUrl, HttpMethod.GET, httpEntity, responseType, params);
                if (HttpStatus.OK == responseEntity.getStatusCode()){
                    result = responseEntity.getBody();
                }
            }catch (Exception e){
                logger.error("请求接口出错:", e);
            }
            return result;
        }
    }

    这里注意避免入坑,如果url写法为 http://xxx.com/api,在执行请求时直接将参数对象params带入,结果会报错,无法转换,

     应该在url后面手动添加?key1={value2}&key2={value2},其中key值与params的键值一一对应

    这种方法是get请求时携带的参数较少的情况,如果请求的参数过多或者请求参数个数不确定,有时传入一些不必选的参数时拼接起来有局限性,并且容易出错,这时候可以自己手动将参数拼接至url后面

  • 相关阅读:
    [LeetCode]题解(python):086
    [LeetCode]题解(python):083
    [LeetCode]题解(python):082
    两位图灵奖得主万字长文:新计算机架构,黄金十年爆发!——读后感
    《架构漫谈》阅读笔记三
    以《淘宝网》为例,描绘质量属性的六个常见属性场景
    周学习笔记(01)——大三下
    Anconda、Pycharm下载、安装、配置教程(极其详细)
    《架构漫谈》阅读笔记二
    《架构漫谈》阅读笔记一
  • 原文地址:https://www.cnblogs.com/LiuFqiang/p/14274749.html
Copyright © 2011-2022 走看看