首页 文章

通过Spring Boot调用AirTable Rest API返回401

提问于
浏览
0

我可以成功调用PostMan和Intellij 's built-in Rest Client using my API key. When I try to use Spring'的RestTemplate中的AirTable API,使用相同的URL和 Headers 我得到401

org.springframework.web.client.HttpClientErrorException: 401 Unauthorized

我的RestTemplate代码是:

RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", "Bearer " + apiKey);
HttpEntity<String> entity = new HttpEntity<>("parameters", headers);
return restTemplate.getForObject(URL, String.class, entity);

通过Rest客户端(如PostMan或Intellij的内置客户端)提供完全相同的URL和标头(Bearer API密钥),我得到200响应,并从AirTable返回预期的数据 .

我在上面的代码中使用RestTemplate做错了什么?

1 回答

  • 1

    你正在使用的 getForObject 的重载需要一个vararg对象作为最后一个参数,这些值是用于替换第一个参数的变量的值,该变量应该是URI模板 . 这意味着您正在设置的 Headers 未按照您希望的方式使用 .

    您应该使用正确的 exchange 重载,使用 HttpEntity ,它将按预期运行 .

    另一个选项是,为了避免总是在请求中明确地放置auth,使用拦截器(有一个用于Basic auth的可以用作参考) .

相关问题