Disable "failOnServerError" in ReactorClientHttpRequest
This commit disables the "failOnServerError" feature on the `HttpClientRequest`, as wrapped by ReactorClientHttpRequest. 5xx errors are supposed to be dealt with in the WebClient, not in the lower-level components. Issue: SPR-15739
This commit is contained in:
parent
0065bc5ee5
commit
b0ab84657b
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2016 the original author or authors.
|
||||
* Copyright 2002-2017 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -53,7 +53,7 @@ public class ReactorClientHttpRequest extends AbstractClientHttpRequest {
|
|||
HttpClientRequest httpRequest) {
|
||||
this.httpMethod = httpMethod;
|
||||
this.uri = uri;
|
||||
this.httpRequest = httpRequest.failOnClientError(false);
|
||||
this.httpRequest = httpRequest.failOnClientError(false).failOnServerError(false);
|
||||
this.bufferFactory = new NettyDataBufferFactory(httpRequest.alloc());
|
||||
}
|
||||
|
||||
|
|
|
@ -370,6 +370,26 @@ public class WebClientIntegrationTests {
|
|||
Assert.assertEquals("/greeting?name=Spring", recordedRequest.getPath());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void retrieveBodyToMonoInternalServerError() throws Exception {
|
||||
this.server.enqueue(new MockResponse().setResponseCode(500)
|
||||
.setHeader("Content-Type", "text/plain").setBody("Internal Server error"));
|
||||
|
||||
Mono<String> result = this.webClient.get()
|
||||
.uri("/greeting?name=Spring")
|
||||
.retrieve()
|
||||
.bodyToMono(String.class);
|
||||
|
||||
StepVerifier.create(result)
|
||||
.expectError(WebClientException.class)
|
||||
.verify(Duration.ofSeconds(3));
|
||||
|
||||
RecordedRequest recordedRequest = server.takeRequest();
|
||||
Assert.assertEquals(1, server.getRequestCount());
|
||||
Assert.assertEquals("*/*", recordedRequest.getHeader(HttpHeaders.ACCEPT));
|
||||
Assert.assertEquals("/greeting?name=Spring", recordedRequest.getPath());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void retrieveToEntityNotFound() throws Exception {
|
||||
this.server.enqueue(new MockResponse().setResponseCode(404)
|
||||
|
|
Loading…
Reference in New Issue