• 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后面

  • 相关阅读:
    npm install 错误 | gyp ERR! configure error
    AD中鼠标经过PCB走线或元器不能高亮显示连线的解决办法
    浏览器提示TLS版本过低, 要求升到TLS1.2或TLS1.3的一些问题收录
    Java.报错:The type java.lang.CharSequence cannot be resolved. It is indirectly referenced from required .class files
    Centos.安装Goaccess1.2
    Mongoose多数据库连接及实用样例
    mongodb通过profile来监控数据
    mongodb副本集 statestr状态说明/解释
    mongodb.副本集配置方法(使用keyfile认证部署)
    vsftp安装与配置for Linux
  • 原文地址:https://www.cnblogs.com/LiuFqiang/p/14274749.html
Copyright © 2020-2023  润新知