Bho*_*esh 0 api-key http-headers spring-boot
我试图从我的 Spring Boot 应用程序的标头中调用带有x-api-key的外部 api ,并最终出现以下异常。
2022-01-22 22:44:19.973 ERROR 8828 --- [nio-8080-exec-2] oaccC[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] 在上下文中path[]抛出异常[请求处理失败;嵌套异常是 org.springframework.web.client.HttpClientErrorException$Forbidden: 403 Forbidden: "{"message":"Forbidden"}"] 其根本原因
org.springframework.web.client.HttpClientErrorException$Forbidden: 403 禁止: "{"message":"Forbidden"}" 在 org.springframework.web.client.HttpClientErrorException.create(HttpClientErrorException.java:109) ~[spring-web -5.3.15.jar:5.3.15] 在 org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:168) ~[spring-web-5.3.15.jar:5.3.15] 在 org.springframework .web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:122) ~[spring-web-5.3.15.jar:5.3.15] 在 org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63) 〜[spring-web-5.3.15.jar:5.3.15] 在 org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:819) 〜[spring-
我的控制器如下所示:
@RestController
@RequestMapping("/callExternalApi")
public class ExternalApiCallerController {
@PostMapping
@ResponseBody
public ResponseEntity<String> callExternalApi(@RequestBody String url) {
Map<String, String> headers = new HashMap<String, String>();
headers.put("x-api-key", "Hnmn1nhsg7wbkItsAdv");
HttpEntity<Object> entity=new HttpEntity<Object>(headers);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
return response;
}
}
Run Code Online (Sandbox Code Playgroud)
看起来 x-api-key 没有在标头中正确发送到外部 api。任何人都可以帮助如何在标头中使用 x-api-key 调用外部 api 吗?
这段代码对我有用。需要使用 HttpHeaders 对象来添加 x-api-key 及其值。
@RestController
@RequestMapping("/callExternalApi")
public class ExternalApiCallerController {
@PostMapping
@ResponseBody
public ResponseEntity<String> callExternalApi(@RequestBody String url) {
HttpHeaders headers = new HttpHeaders();
headers.add("x-api-key", "Hnmn1nhsg7wbkItsAdv");
HttpEntity<Object> entity=new HttpEntity<Object>(headers);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
return response;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9192 次 |
| 最近记录: |