首页 > 解决方案 > 试图访问 api

问题描述

我尝试访问此 api:https ://www.football-data.org/ 。我有密钥和令牌名称。从邮递员那里,我可以通过“Api Key”自动获取这个api,名称为:X-Auth-Token 和 token XXXX。但是我怎样才能从 java 和 rest 模板中做到这一点?我应该如何把我的标题放到这个网址:

  public List<FootballDto> getFootballs() {
        HttpHeaders headers = new HttpHeaders();
        headers.add(tokenName,token);
        FootballDto[] footballResponse = restTemplate.getForObject(
                "https://api.football-data.org/v2/competitions/SA/scorers", FootballDto[].class
        );
    }

非常感谢 :)

标签: javaapirest

解决方案


RestTemplategetForObject()方法不支持设置标头。解决方法是使用exchange()方法。因此,不要使用restTemplate.getForObject(url, String.class, param)(没有标题),而是使用:

 HttpHeaders headers = new HttpHeaders();
 headers.set("Header-1", "value-1");
 headers.set("Header-2", "value-2");
 ...

 HttpEntity entity = new HttpEntity(headers);

 ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class, param);

最后,使用response.getBody()得到你的结果。


推荐阅读