Improve message for HttpStatusCodeException with empty status text
This commit improves the message for HttpStatusCodeException so that it defaults to the HttpStatus reason phrase if a status text is not provided. This commit also fixes SimpleClientHttpResponse so that it does not return null for getStatusText(). Fixed #22162
This commit is contained in:
parent
155ef5fd77
commit
a5cef3845c
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
* Copyright 2002-2019 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.
|
||||
|
|
@ -57,7 +57,8 @@ final class SimpleClientHttpResponse extends AbstractClientHttpResponse {
|
|||
|
||||
@Override
|
||||
public String getStatusText() throws IOException {
|
||||
return this.connection.getResponseMessage();
|
||||
String result = this.connection.getResponseMessage();
|
||||
return (result != null) ? result : "";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2016 the original author or authors.
|
||||
* Copyright 2002-2019 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.
|
||||
|
|
@ -21,6 +21,7 @@ import java.nio.charset.Charset;
|
|||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
* Abstract base class for exceptions based on an {@link HttpStatus}.
|
||||
|
|
@ -82,11 +83,17 @@ public abstract class HttpStatusCodeException extends RestClientResponseExceptio
|
|||
protected HttpStatusCodeException(HttpStatus statusCode, String statusText,
|
||||
@Nullable HttpHeaders responseHeaders, @Nullable byte[] responseBody, @Nullable Charset responseCharset) {
|
||||
|
||||
super(statusCode.value() + " " + statusText, statusCode.value(), statusText,
|
||||
super(getMessage(statusCode, statusText), statusCode.value(), statusText,
|
||||
responseHeaders, responseBody, responseCharset);
|
||||
this.statusCode = statusCode;
|
||||
}
|
||||
|
||||
private static String getMessage(HttpStatus statusCode, String statusText) {
|
||||
if (!StringUtils.hasLength(statusText)) {
|
||||
statusText = statusCode.getReasonPhrase();
|
||||
}
|
||||
return statusCode.value() + " " + statusText;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the HTTP status code.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2016 the original author or authors.
|
||||
* Copyright 2002-2019 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.
|
||||
|
|
@ -27,7 +27,7 @@ import org.junit.Test;
|
|||
|
||||
import org.springframework.http.HttpStatus;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.*;
|
||||
import static org.hamcrest.CoreMatchers.equalTo;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
|
|
@ -54,4 +54,11 @@ public class HttpStatusCodeExceptionTests {
|
|||
assertThat(ex2.getResponseBodyAsString(), equalTo(ex1.getResponseBodyAsString()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void emptyStatusText() {
|
||||
HttpStatusCodeException ex = new HttpClientErrorException(HttpStatus.NOT_FOUND, "");
|
||||
|
||||
assertEquals("404 Not Found", ex.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue