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:
@@ -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");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -57,7 +57,8 @@ final class SimpleClientHttpResponse extends AbstractClientHttpResponse {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getStatusText() throws IOException {
|
public String getStatusText() throws IOException {
|
||||||
return this.connection.getResponseMessage();
|
String result = this.connection.getResponseMessage();
|
||||||
|
return (result != null) ? result : "";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with 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.HttpHeaders;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.lang.Nullable;
|
import org.springframework.lang.Nullable;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Abstract base class for exceptions based on an {@link HttpStatus}.
|
* 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,
|
protected HttpStatusCodeException(HttpStatus statusCode, String statusText,
|
||||||
@Nullable HttpHeaders responseHeaders, @Nullable byte[] responseBody, @Nullable Charset responseCharset) {
|
@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);
|
responseHeaders, responseBody, responseCharset);
|
||||||
this.statusCode = statusCode;
|
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.
|
* 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");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with 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 org.springframework.http.HttpStatus;
|
||||||
|
|
||||||
import static org.hamcrest.CoreMatchers.*;
|
import static org.hamcrest.CoreMatchers.equalTo;
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -54,4 +54,11 @@ public class HttpStatusCodeExceptionTests {
|
|||||||
assertThat(ex2.getResponseBodyAsString(), equalTo(ex1.getResponseBodyAsString()));
|
assertThat(ex2.getResponseBodyAsString(), equalTo(ex1.getResponseBodyAsString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void emptyStatusText() {
|
||||||
|
HttpStatusCodeException ex = new HttpClientErrorException(HttpStatus.NOT_FOUND, "");
|
||||||
|
|
||||||
|
assertEquals("404 Not Found", ex.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user