当前位置: 首页 > 知识库问答 >
问题:

如何在spring boot的头文件中使用x-API-key调用外部API

徐博雅
2023-03-14

我试图调用一个外部api与x-api-key从我的Spring启动html" target="_blank">应用程序的头,并以以下异常结束。

2022-01-22 22:44:19.973错误8828---[nio-8080-exec-2]o.a.c.c.c.[/]。[dispatcherServlet]:Servlet。路径为[]的上下文中的servlet[dispatcherServlet]的service()引发了异常[Request processing failed;嵌套异常为org.springframework.web.client.HttpClientErrorException$Forbidden:403 Forbidden:“{”message“:”Forbidden“}”,根本原因是

组织。springframework。网状物客户HttpClientErrorException$Forbidden:403 Forbidden:“{”message“:”Forbidden“}”位于组织。springframework。网状物客户HttpClientErrorException。在org上创建(HttpClientErrorException.java:109)~(spring-web-5.3.15.jar:5.3.15)。springframework。网状物客户DefaultResponseErrorHandler。handleError(DefaultResponseErrorHandler.java:168)~[spring-web-5.3.15.jar:5.3.15]位于org。springframework。网状物客户DefaultResponseErrorHandler。handleError(DefaultResponseErrorHandler.java:122)~[spring-web-5.3.15.jar:5.3.15]位于org。springframework。网状物客户ResponseErrorHandler。handleError(ResponseErrorHandler.java:63)~[spring-web-5.3.15.jar:5.3.15]位于org。springframework。网状物客户RestTemplate。HandlerResponse(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;
        }
    
    }

看起来x-api-key没有在标头中正确发送到外部api。有谁能帮我用x-api-key在标题中调用外部api吗?

共有1个答案

农鸿德
2023-03-14

这个代码对我有效。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;
    }

}
 类似资料:
  • 我假设有很多情况需要调用基于值列表的外部RESTful服务。 现在对于这些productId中的每一个,我想并行调用一个外部endpoint。大致如下: 你会如何转换这个 到 当所有通话成功完成时。 一个人如何使用可完成的未来来实现这一点? 我想我要问的是,如何等待所有调用完成,然后以集合的形式获得结果。

  • 我正在使用具有OAuth1.0授权的API。我想使用授权Oauth标头调用该API:- 我已经从使用-(消费者密钥、密钥别名和密码)从服务器接收到的令牌/密钥创建了授权标头,并希望将令牌或OAuth标头与调用一起发回。 我已经在一个处理器(实现骆驼处理器的类)中完成了所有这些事情,现在我想做:- 要么在处理器本身中使用此Oauth标头(String类型)调用rest API。 否则发送这个标头作为

  • 抱歉,本节仍然继续折腾 Hello World。 上一节我们已经完成了 libhello 动态库的构建以及安装,本节我们的任务很简单: 编写一个程序使用我们上一节构建的共享库。 1. 准备工作 请在 /backup/cmake 目录建立 t4 目录,本节所有资源将存储在 t4 目录。 2. 重复以前的步骤,建立src目录,编写源文件 main.c,内容如下: #include <hello.h>

  • 问题内容: 我有以下两个javascript函数: 1 2 我想将它们放在外部“ .js”文件中 1 2 调用这些函数的正确语法是什么? 问题答案: 像这样的代码 希望对您有帮助。…谢谢

  • 问题内容: 我正在尝试使用jquery在Facebook墙上发表评论。 但是我的ajax调用不会降低外部url。 谁能解释我们如何在jquery中使用外部网址? 下面是我的代码: 它给xmlhtttprequest错误。 问题答案: 所有这些答案都是错误的! 就像我在评论中说的那样,由于URL未能通过“ 相同来源策略 ”而导致出现此错误的原因,但是您仍然可以使用AJAX函数访问另一个域,请参见Ni