This commit is contained in:
Looly 2021-04-10 20:35:07 +08:00
parent 1edbc0de80
commit dbcbf53bca
5 changed files with 58 additions and 7 deletions

View File

@ -3,7 +3,7 @@
-------------------------------------------------------------------------------------------------------------
# 5.6.3 (2021-04-08)
# 5.6.3 (2021-04-10)
### 新特性
* 【core 】 修改数字转换的实现增加按照指定端序转换pr#1492@Github
@ -17,12 +17,14 @@
* 【cache 】 EnumUtil使用LinkedHashMappr#304@Gitee
* 【crypto 】 SymmetricCrypto支持大量数据加密解密pr#1497@Gitee
* 【http 】 SoapClient增加针对不同协议的头信息pr#305@Gitee
* 【http 】 HttpRequest支持307、308状态码识别issue#1504@Gitee
### Bug修复
* 【core 】 修复Validator.isUrl()传空返回trueissue#I3ETTY@Gitee
* 【db 】 修复数据库driver根据url的判断识别错误问题issue#I3EWBI@Gitee
* 【json 】 修复JSONStrFormatter换行多余空行问题issue#I3FA8B@Gitee
* 【core 】 修复UrlPath中的+被转义为空格%20的问题issue#1501@Github
* 【core 】 修复DateUtil.parse方法对UTC时间毫秒少于3位不识别问题issue#1503@Github
-------------------------------------------------------------------------------------------------------------

View File

@ -822,8 +822,12 @@ public class DateUtil extends CalendarUtil {
if (length == DatePattern.UTC_PATTERN.length() - 4) {
// 格式类似2018-09-13T05:34:31Z-4表示减去4个单引号的长度
return parse(utcString, DatePattern.UTC_FORMAT);
} else if (length == DatePattern.UTC_MS_PATTERN.length() - 4) {
// 格式类似2018-09-13T05:34:31.999Z-4表示减去4个单引号的长度
}
final int patternLength = DatePattern.UTC_MS_PATTERN.length();
// 格式类似2018-09-13T05:34:31.999Z-4表示减去4个单引号的长度
// -4 ~ -6范围表示匹配毫秒1~3位的情况
if (length <= patternLength - 4 && length >= patternLength - 6) {
return parse(utcString, DatePattern.UTC_MS_FORMAT);
}
} else {

View File

@ -559,6 +559,23 @@ public class DateUtilTest {
Assert.assertEquals("2018-09-13 13:34:39", dateStr);
}
@Test
public void parseUTCTest2(){
// issue1503@Github
// 检查不同毫秒长度都可以正常匹配
String utcTime="2021-03-30T12:56:51.3Z";
DateTime parse = DateUtil.parseUTC(utcTime);
Assert.assertEquals("2021-03-30 12:56:51", parse.toString());
utcTime="2021-03-30T12:56:51.34Z";
parse = DateUtil.parseUTC(utcTime);
Assert.assertEquals("2021-03-30 12:56:51", parse.toString());
utcTime="2021-03-30T12:56:51.345Z";
parse = DateUtil.parseUTC(utcTime);
Assert.assertEquals("2021-03-30 12:56:51", parse.toString());
}
@Test
public void parseCSTTest(){
String dateStr = "Wed Sep 16 11:26:23 CST 2009";

View File

@ -1126,7 +1126,7 @@ public class HttpRequest extends HttpBase<HttpRequest> {
}
if (responseCode != HttpURLConnection.HTTP_OK) {
if (responseCode == HttpURLConnection.HTTP_MOVED_TEMP || responseCode == HttpURLConnection.HTTP_MOVED_PERM || responseCode == HttpURLConnection.HTTP_SEE_OTHER) {
if (HttpStatus.isRedirected(responseCode)) {
setUrl(httpConnection.header(Header.LOCATION));
if (redirectCount < this.maxRedirectCount) {
redirectCount++;

View File

@ -2,15 +2,15 @@ package cn.hutool.http;
/**
* HTTP状态码
*
*
* @author Looly
* @see java.net.HttpURLConnection
*
*/
public class HttpStatus {
/* 2XX: generally "OK" */
/**
* HTTP Status-Code 200: OK.
*/
@ -78,6 +78,18 @@ public class HttpStatus {
*/
public static final int HTTP_USE_PROXY = 305;
/**
* HTTP 1.1 Status-Code 307: Temporary Redirect.<br>
* RFC-7231
*/
public static final int HTTP_TEMP_REDIRECT = 307;
/**
* HTTP 1.1 Status-Code 308: Permanent Redirect 永久重定向<br>
* RFC-7231
*/
public static final int HTTP_PERMANENT_REDIRECT = 308;
/* 4XX: client error */
/**
@ -191,4 +203,20 @@ public class HttpStatus {
* HTTP Status-Code 505: HTTP Version Not Supported.
*/
public static final int HTTP_VERSION = 505;
/**
* 是否为重定向状态码
* @param responseCode 被检查的状态码
* @return 是否为重定向状态码
* @since 5.6.3
*/
public static boolean isRedirected(int responseCode){
return responseCode == HTTP_MOVED_PERM
|| responseCode == HTTP_MOVED_TEMP
|| responseCode == HTTP_SEE_OTHER
// issue#1504@Github307和308是RFC 7538中http 1.1定义的规范
|| responseCode == HTTP_TEMP_REDIRECT
|| responseCode == HTTP_PERMANENT_REDIRECT;
}
}