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

通过Vertx客户端调用API网关时出现问题

谭京
2023-03-14

我正在尝试使用Vertx Webclient连接到AWS API网关:

        HttpRequest<Buffer> request = webClient.postAbs(targetHost);
        request.putHeader("Authorization", auth);
        request.putHeader("Content-Type", contentType);
        request.putHeader("Host", hostName);

        request.sendJson(new JsonObject(jsonData), response -> {
        if (response.succeeded()) {
        final JsonObject result = response.result().bodyAsJsonObject();
        logger.info(result.toString());
        routingContext.response()
        .setStatusCode(200)
        .putHeader("Content-Type", "application/json")
        .end(result.toString());
        } else {
        logger.error(response.cause().getMessage());
        routingContext.fail(new Exception(response.cause().getMessage()));
        }
        });

并且总是收到相同的错误响应,即我们计算的请求签名与您提供的签名不匹配。检查您的AWS秘密访问密钥和签名方法。

但是如果我使用javax.ws.rs.client.WebTarget,

        Client client = ClientBuilder.newClient();
        WebTarget target = client.target(targetHost);

        response=target.request()
        .header("Authorization", auth)
        .header("Content-Type", contentType)
        .header("Host", hostName)
        .post(jsonData,Response.class);

我能够得到适当的回应。

知道Vertx web客户端的不同之处吗?

共有1个答案

高寒
2023-03-14

所以我们解决了问题,发现我们使用的json数据在Vertx实现中没有正确传递。

因此,我们可以创建一个新的JSONObject,创建数据并使用此对象来验证aws签名,并在实际的API调用中传递相同的对象。

谢谢

 类似资料:
  • 问题内容: 我正在尝试建立与trackobot.com的连接以接收一些JSON数据。服务器仅允许通过HTTPS / SSL进行连接。这是代码: openSteam抛出javax.net.ssl.SSLHandshakeException:收到致命警报:handshake_failure 我通读了与类似问题有关的几篇文章,但没有任何建议可以帮助您。适当的证书在我的信任库中。例如,当我尝试连接到goo

  • 使用java-version:1.8.0_171,我试图连接到API网关,但使用java8却得到一个SSL handshake_failure。已经运行的命令: 启用时,我得到了以下信息: 更新

  • 我有一个这样的设置: 浏览器->API网关->lambda:87 ms 如何快速调用Lambda函数?

  • 我尝试测试vertx社区web客户端提供的反应式web客户端。 我遵循官方指南Quarkus-反应式入门。 并在依赖项中添加了以下内容。 但是当我如文中所述注入时,得到了CDI未满足的依赖异常。不可用。 完整的代码在这里。

  • 尝试使用akka、rx、vert建立一个反应系统。x和mongodb中的流(下游)看起来很像: <代码>发布者- 我遇到了这样一种情况,上游在mongo上调用了太多的更新收集操作,结果是: <代码>com。mongodb。MongoWaitQueueFullException:等待连接的线程太多。已超过500个最大线程数(maxWaitQueueSize) 更新集合: > 在同一集合上执行 正在向

  • 我正在使用GoogleSignIn pod中的此代码从IOS应用程序请求访问用户数据 然后,我在应用代理中接收访问令牌和刷新令牌,并将其发送到运行PHP并使用此google客户端库(https://github.com/googleapis/google-api-php-client)的服务器...第一个小时一切正常,访问令牌有效,允许我访问所有范围。然后一个小时后,访问令牌过期,我尝试使用此代码