Merge branch '5.3.x'
This commit is contained in:
@@ -57,6 +57,7 @@ public abstract class AbstractFileResolvingResource extends AbstractResource {
|
||||
HttpURLConnection httpCon =
|
||||
(con instanceof HttpURLConnection ? (HttpURLConnection) con : null);
|
||||
if (httpCon != null) {
|
||||
httpCon.setRequestMethod("HEAD");
|
||||
int code = httpCon.getResponseCode();
|
||||
if (code == HttpURLConnection.HTTP_OK) {
|
||||
return true;
|
||||
@@ -107,6 +108,7 @@ public abstract class AbstractFileResolvingResource extends AbstractResource {
|
||||
URLConnection con = url.openConnection();
|
||||
customizeConnection(con);
|
||||
if (con instanceof HttpURLConnection httpCon) {
|
||||
httpCon.setRequestMethod("HEAD");
|
||||
int code = httpCon.getResponseCode();
|
||||
if (code != HttpURLConnection.HTTP_OK) {
|
||||
httpCon.disconnect();
|
||||
@@ -244,6 +246,9 @@ public abstract class AbstractFileResolvingResource extends AbstractResource {
|
||||
// Try a URL connection content-length header
|
||||
URLConnection con = url.openConnection();
|
||||
customizeConnection(con);
|
||||
if (con instanceof HttpURLConnection httpCon) {
|
||||
httpCon.setRequestMethod("HEAD");
|
||||
}
|
||||
return con.getContentLengthLong();
|
||||
}
|
||||
}
|
||||
@@ -269,6 +274,9 @@ public abstract class AbstractFileResolvingResource extends AbstractResource {
|
||||
// Try a URL connection last-modified header
|
||||
URLConnection con = url.openConnection();
|
||||
customizeConnection(con);
|
||||
if (con instanceof HttpURLConnection httpCon) {
|
||||
httpCon.setRequestMethod("HEAD");
|
||||
}
|
||||
long lastModified = con.getLastModified();
|
||||
if (fileCheck && lastModified == 0 && con.getContentLengthLong() <= 0) {
|
||||
throw new FileNotFoundException(getDescription() +
|
||||
@@ -278,8 +286,7 @@ public abstract class AbstractFileResolvingResource extends AbstractResource {
|
||||
}
|
||||
|
||||
/**
|
||||
* Customize the given {@link URLConnection}, obtained in the course of an
|
||||
* {@link #exists()}, {@link #contentLength()} or {@link #lastModified()} call.
|
||||
* Customize the given {@link URLConnection} before fetching the resource.
|
||||
* <p>Calls {@link ResourceUtils#useCachesIfNecessary(URLConnection)} and
|
||||
* delegates to {@link #customizeConnection(HttpURLConnection)} if possible.
|
||||
* Can be overridden in subclasses.
|
||||
@@ -294,14 +301,12 @@ public abstract class AbstractFileResolvingResource extends AbstractResource {
|
||||
}
|
||||
|
||||
/**
|
||||
* Customize the given {@link HttpURLConnection}, obtained in the course of an
|
||||
* {@link #exists()}, {@link #contentLength()} or {@link #lastModified()} call.
|
||||
* <p>Sets request method "HEAD" by default. Can be overridden in subclasses.
|
||||
* Customize the given {@link HttpURLConnection} before fetching the resource.
|
||||
* <p>Can be overridden in subclasses for configuring request headers and timeouts.
|
||||
* @param con the HttpURLConnection to customize
|
||||
* @throws IOException if thrown from HttpURLConnection methods
|
||||
*/
|
||||
protected void customizeConnection(HttpURLConnection con) throws IOException {
|
||||
con.setRequestMethod("HEAD");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -29,7 +29,6 @@ import java.net.URLConnection;
|
||||
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.ResourceUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
@@ -228,7 +227,7 @@ public class UrlResource extends AbstractFileResolvingResource {
|
||||
@Override
|
||||
public InputStream getInputStream() throws IOException {
|
||||
URLConnection con = this.url.openConnection();
|
||||
ResourceUtils.useCachesIfNecessary(con);
|
||||
customizeConnection(con);
|
||||
try {
|
||||
return con.getInputStream();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user