java代码监测进程状态,java – 在WebFlux WebClient中测试状态代码时如何获取响应体?...

在尝试根据返回的状态代码抛出异常时,如何检索响应主体?例如,假设我想抛出异常并拒绝HTTP 201.

client.post().exchange().doOnSuccess(response -> {

if (response.statusCode().value() == 201) {

throw new RuntimeException();

}

}

如何使用响应的主体填充异常,以便我可以抛出详细的WebClientResponseException?

我应该使用不同的方法来测试响应状态代码吗?

编辑:我试图在使用exchange()时复制以下功能.

client.get()

.retrieve()

.onStatus(s -> !HttpStatus.CREATED.equals(s),

MyClass::createResponseException);

//MyClass

public static Mono createResponseException(ClientResponse response) {

return response.body(BodyExtractors.toDataBuffers())

.reduce(DataBuffer::write)

.map(dataBuffer -> {

byte[] bytes = new byte[dataBuffer.readableByteCount()];

dataBuffer.read(bytes);

DataBufferUtils.release(dataBuffer);

return bytes;

})

.defaultIfEmpty(new byte[0])

.map(bodyBytes -> {

String msg = String.format("ClientResponse has erroneous status code: %d %s", response.statusCode().value(),

response.statusCode().getReasonPhrase());

Charset charset = response.headers().contentType()

.map(MimeType::getCharset)

.orElse(StandardCharsets.ISO_8859_1);

return new WebClientResponseException(msg,

response.statusCode().value(),

response.statusCode().getReasonPhrase(),

response.headers().asHttpHeaders(),

bodyBytes,

charset

);

});

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值