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

使用Spring WebClient访问成功请求的响应状态代码

史英睿
2023-03-14

我需要能够访问请求的状态代码。呼叫可以通过200或201两种方式成功。这在通过邮递员呼叫但使用web客户端时很明显,到目前为止我还无法确定发生了什么。

webClient.post()
        .uri(url)
        .header(HttpHeaders.ACCEPT, MediaType.ALL_VALUE)
        .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
        .header(HttpHeaders.AUTHORIZATION, bearerToken)
        .bodyValue(bodyMap)
        .retrieve()
        .onStatus(
                HttpStatus.BAD_REQUEST::equals,
                response -> response.bodyToMono(String.class).map(Exception::new))
        .bodyToMono(Map.class)

我在想也许我可以在 onStatus() lambda 函数中使用设置一个整数变量。甚至可以访问 lambda 函数中的外部变量吗?

int responseStatus;

// post call
.onStatus(
            HttpStatus.CREATED::equals,
            response -> ... // do something to set responseStatus

共有1个答案

柯鸿振
2023-03-14

您可以使用 .toEntity(类

var response = webClient.post()
        .uri(uri)
        .retrieve()
        .toEntity(Map.class)
        .map(res -> {
            if (res.getStatusCode().equals(HttpStatus.OK)) {
                ...
            }

            return res.getBody();
        });

 类似资料:
  • 我无法从类似200201的响应中获取成功响应状态代码。。我们可以很容易地从类中获得错误代码,比如和。是否有获取状态代码的解决方法?

  • 我正在尝试使用Web客户端创建REST调用 我只想记录通话结果。成功时 - 使用响应正文记录成功消息,在 5XX 或超时或其他时 - 记录错误消息。日志应该在后台创建(而不是由创建调用的线程创建)但是每次都会执行,工作正常,但也有 记录在日志文件中。 我也在一些教程中看到过方法,但在我的设置中有这样的方法。 如何记录成功和失败消息?

  • 我在临时服务器上推送了我的textract代码,现在我收到了一个错误。 它正在开发一个系统。我不明白为什么会这样。 我正在使用dotnet core 3.0 我遵循这里提供的代码示例。[https://github.com/aws-samples/amazon-textract-code-samples/tree/master/src-csharp] 我对IAM的资质有疑问。为此,我在stagin

  • 我正面临一个奇怪的问题。我有一个运行在端口8080上的java spring应用程序和运行在端口3000上的Angular应用程序。当请求返回状态为200并且可以在browser network选项卡中找到响应时,控制台抛出错误XMLHttpRequest无法加载'http://localhost:8080/apiname'。请求的资源上没有“access-control-allow-origin

  • 问题内容: 我正在实现一个返回JSON编码的有效负载的Web服务。如果服务调用失败(例如,由于参数无效),则返回JSON编码的错误。但是,我不确定在这种情况下应返回什么HTTP状态代码。 一方面,似乎HTTP状态代码用于HTTP:即使返回了应用程序错误,HTTP传输 本身 还是成功的,表明响应为 200 OK 。 另一方面,RESTful方法似乎建议如果调用者试图发布到资源,并且请求的JSON参数

  • 我正在使用Cosmos DB存储库并尝试为下面的对象添加新项目。 这是我添加新项目的代码代码: Cosmos DB Respository CreateAsync: 插入新项目时出现以下异常: "响应状态码不表示成功:BadRequest(400);Substatus:1001;ActivityId:68af0c72-ff2d-4055-8898-b94a08f18ead;原因:();" 下面是堆