java - 试图访问 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
);
}
非常感谢 :)
解决方案
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()
得到你的结果。
推荐阅读
- websocket - Sending async message from micronaut ServerWebSocket
- java - 是否有用于模拟存根的“非”ArgumentMatcher
- react-native - how to solve "null is not object(evaluating RNGestureHandlerModule.default.direction" in react native 5.0
- c - 是否可以在 Windows 中获取指针的文件名?
- java - Autowiring in spring is null in src package
- sql-server - 使用 SSIS 派生列转换在最后一个反斜杠后检索文本
- google-chrome-extension - chrome.tabs.executeScript only seems to execute in the active tab
- javascript - 提示输入文本值失败
- javascript - 将图像从相机发送到 Android webview
- c++ - OSX MetalKit CVMetalTextureCacheCreateTextureFromImage 失败,状态:-6660