java - 我可以使用 Spring Boot 使用别人的 API 发出请求吗?
问题描述
我是 Spring 新手,我试图理解它。我可以使用 Spring boot 调用别人的 api 吗?例如,我使用的 api 需要使用他们给我的凭据进行身份验证。我想使用他们的 API 来发出 POST 请求。到目前为止,我已经找到了与使用您自己的 API 相关的文档。这些请求也需要传递标头。
使用 Spring 传递我的凭据和所需的标头,我可以执行 POST 请求的最简单方法是什么?
任何帮助,将不胜感激。
解决方案
如果我很了解你,你需要发布另一个带有凭据的 web-api 好的,你可以使用
- restTemplate 像下面的例子
public List<EtisAccount> getAllActiveAccount(){
logger.debug("Debug: in Class \t"+this.getClass().getName()+" Method Name is: \t"+new Object() {}.getClass().getEnclosingMethod().getName());
Properties sprinklrProp=sprinklrProperties.getSprinklrKeys();
SprinklrCredential sprinklrCredential=credentialBuilder.getSprinklrCredential();
RestTemplate restTemplate= new RestTemplate();
HttpHeaders header = new HttpHeaders();
header.setBearerAuth(sprinklrCredential.getAccess_token());
header.add("key", sprinklrCredential.getApi_key());
header.set("Accept", MediaType.APPLICATION_JSON_UTF8_VALUE);
UriComponentsBuilder uriBuilder= UriComponentsBuilder.fromUriString(sprinklrProp.getProperty("sprinlrUri").toString())
.queryParam("types", sprinklrProp.getProperty("accountTypes").toString());
HttpEntity<String> entity= new HttpEntity<>(header);
sslCertificateValidation.disable();
ResponseEntity<String> sprinklrResponse=restTemplate.exchange(uriBuilder.toUriString(),HttpMethod.GET,entity, String.class);
List<EtisAccount> activeAccouts=etisAccountHelper.getAllSocialEtisAccounts(sprinklrResponse.getBody());
logger.debug(String.valueOf(sprinklrResponse.getStatusCodeValue()));
logger.debug(activeAccouts.toString());
return activeAccouts;
}
这是使用 RestTemplate 调用在线 API 的示例示例
在这里,我使用凭据构建标头(承载身份验证)
HttpHeaders header = new HttpHeaders();
header.setBearerAuth(sprinklrCredential.getAccess_token());
header.add("key", sprinklrCredential.getApi_key());
header.set("Accept", MediaType.APPLICATION_JSON_UTF8_VALUE);
在这里我添加标头requestEntity以添加到resttemplate请求
HttpEntity<String> entity= new HttpEntity<>(header);
在这里我使用交换方法得到响应
ResponseEntity<String> sprinklrResponse=restTemplate.exchange(uriBuilder.toUriString(),HttpMethod.POST,entity, String.class);
推荐阅读
- linux - 如何删除文件1中不在文件2中的
- telegram - 开始按钮中缺少电报深度链接开始参数
- python - 无论你输入什么,我总是得到 ID 不在列表中
- xml - 如何在xslt中逐字复制xml节点
- amazon-web-services - AWS Logs Insights 解析正则表达式始终为空
- monetdb - 如何实现字符串的 SUM 聚合
- jsf - JSF:向操作方法添加参数后导航规则停止工作
- r - R抓取多个png文件
- xaml - Xamarin Forms 将 CollectionViews 水平和垂直相乘
- android - 从 liveData 使用的列表中删除元素不会删除任何