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

如何从Spring5WebClient中提取响应头和状态代码

谢承
2023-03-14

我是Spring Reactive framework的新手&正在尝试将SpringBoot1.5.x代码转换为SpringBoot2.0。我需要从Spring5WebClient ClientResponse返回一些过滤后的响应头、主体和状态代码。我不想使用block()方法,因为它会将其转换为同步调用。我可以很容易地使用BodyTomono获得responsebody。此外,如果我只是返回ClientResponse,但我需要根据statusCode和header参数处理响应,那么我将获得状态代码、头和正文。我试过订阅、flatMap等,但都不起作用。

Mono<String> responseBody =  response.flatMap(resp -> resp.bodyToMono(String.class));

共有1个答案

梁丘扬
2023-03-14

您可以使用webclient的交换功能,例如。

Mono<String> reponse = webclient.get()
.uri("https://stackoverflow.com")
.exchange()
.doOnSuccess(clientResponse -> System.out.println("clientResponse.headers() = " + clientResponse.headers()))
.doOnSuccess(clientResponse -> System.out.println("clientResponse.statusCode() = " + clientResponse.statusCode()))
.flatMap(clientResponse -> clientResponse.bodyToMono(String.class));

然后您可以转换bodyToMono等

 类似资料:
  • 我正在使用volley库用于Android中的网络调用,并使用jsonObject用于从服务器发送和获取值。 在我的例子中,如果我发送了正确的值,它将返回正确的json对象,但是如果我向服务器发送了错误的输入,它将返回401作为带有错误消息的请求头和响应体。但在onResponse success方法中没有显示这一点。 有谁能帮我克服这个问题吗?

  • 如何从的结果中获取HTTP状态?

  • 问题内容: 调用JAX-WS端点时,如何获取HTTP响应代码? 在下面的示例代码中,在调用Web服务时可能会引发Exception,例如或。 在这种情况下,如何从HTTP响应中获取HTTP状态代码? 问题答案: 完成@Praveen答案后,您必须将变成原始值,然后从上下文中获取值。 如果您在托管的Web服务客户端中发生异常,请不要忘记将事务标记为回滚。

  • 我希望检索HTTP响应状态代码(例如,400、401、403、503等),以防请求失败(理想情况下也是成功)。在这段代码中,我使用HTTP Basic执行用户身份验证,并希望能够在用户错误键入密码时向用户发送身份验证失败的消息。 不幸的是,产生的错误似乎并不表示实际收到了HTTP状态代码409: 此外,在发生错误时检索HTTP正文会很好,因为我的服务器端将在那里放置错误的文本描述。 问题 是否可以

  • 我正在使用apache的HttpClient(通过Fluent API)。当我获得响应对象时,我首先执行以下操作: 如果状态代码为4xx或5xx,我将抛出异常,或者返回内容: 这里是类型为的对象。但当我运行此程序时,我得到: 我怎样才能避开这件事?

  • 我可以通过Inspect工具找到HTML。我的代码返回的是html,我可以通过“查看页面源代码”工具看到它。因此,这意味着taht Javascript在嵌入代码之前会修改代码。但是,splash的角色是运行javascript并返回HTML,不是吗??回应。body返回页面的源代码,而不返回我上面提到的响应所需的html代码。