diff --git a/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java index c0a118bee..21dd97014 100755 --- a/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java @@ -1060,4 +1060,12 @@ public class DateUtilTest { DateUtil.parse(sourceStr)); Assert.assertTrue(between); } + + @Test + public void isLastDayTest(){ + final DateTime dateTime = DateUtil.parse("2022-09-30"); + final int dayOfMonth = DateUtil.getLastDayOfMonth(dateTime); + Assert.assertEquals(dayOfMonth, Objects.requireNonNull(dateTime).dayOfMonth()); + Assert.assertTrue("not is last day of this month !!",DateUtil.isLastDayOfMonth(dateTime)); + } } diff --git a/hutool-http/src/main/java/cn/hutool/http/HttpRequest.java b/hutool-http/src/main/java/cn/hutool/http/HttpRequest.java index 60263d720..0e7de4d6c 100755 --- a/hutool-http/src/main/java/cn/hutool/http/HttpRequest.java +++ b/hutool-http/src/main/java/cn/hutool/http/HttpRequest.java @@ -8,6 +8,7 @@ import cn.hutool.core.io.resource.FileResource; import cn.hutool.core.io.resource.MultiFileResource; import cn.hutool.core.io.resource.Resource; import cn.hutool.core.lang.Assert; +import cn.hutool.core.lang.Console; import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.TableMap; import cn.hutool.core.net.ssl.SSLUtil; @@ -1226,7 +1227,23 @@ public class HttpRequest extends HttpBase { if (responseCode != HttpURLConnection.HTTP_OK) { if (HttpStatus.isRedirected(responseCode)) { - setUrl(UrlBuilder.ofHttpWithoutEncode(httpConnection.header(Header.LOCATION))); + + final UrlBuilder redirectUrl; + String location = httpConnection.header(Header.LOCATION); + if(false == HttpUtil.isHttp(location) && false == HttpUtil.isHttps(location)){ + // issue#I5TPSY + // location可能为相对路径 + if(false == location.startsWith("/")){ + location = StrUtil.addSuffixIfNot(this.url.getPathStr(), "/") + location; + } + redirectUrl = UrlBuilder.of(this.url.getScheme(), this.url.getHost(), this.url.getPort() + , location, null, null, this.charset); + } else{ + redirectUrl = UrlBuilder.ofHttpWithoutEncode(location); + } + + Console.log(redirectUrl); + setUrl(redirectUrl); if (redirectCount < config.maxRedirectCount) { redirectCount++; // 重定向不再走过滤器 diff --git a/hutool-http/src/test/java/cn/hutool/http/IssueI5TPSYTest.java b/hutool-http/src/test/java/cn/hutool/http/IssueI5TPSYTest.java new file mode 100755 index 000000000..13f779f5c --- /dev/null +++ b/hutool-http/src/test/java/cn/hutool/http/IssueI5TPSYTest.java @@ -0,0 +1,20 @@ +package cn.hutool.http; + +import cn.hutool.core.lang.Console; +import org.junit.Ignore; +import org.junit.Test; + +import java.net.HttpCookie; + +public class IssueI5TPSYTest { + + @Test + @Ignore + public void redirectTest() { + final String url = "https://bsxt.gdzwfw.gov.cn/UnifiedReporting/auth/newIndex"; + final HttpResponse res = HttpUtil.createGet(url).setFollowRedirects(true) + .cookie(new HttpCookie("iPlanetDirectoryPro", "123")) + .execute(); + Console.log(res.body()); + } +} diff --git a/hutool-poi/src/main/java/cn/hutool/poi/excel/cell/CellUtil.java b/hutool-poi/src/main/java/cn/hutool/poi/excel/cell/CellUtil.java index 5adfbdbd0..33dd684ae 100644 --- a/hutool-poi/src/main/java/cn/hutool/poi/excel/cell/CellUtil.java +++ b/hutool-poi/src/main/java/cn/hutool/poi/excel/cell/CellUtil.java @@ -7,7 +7,7 @@ import cn.hutool.poi.excel.StyleSet; import cn.hutool.poi.excel.cell.setters.CellSetterFactory; import cn.hutool.poi.excel.cell.values.ErrorCellValue; import cn.hutool.poi.excel.cell.values.NumericCellValue; -import cn.hutool.poi.excel.editors.TrimEditor; +import cn.hutool.poi.excel.cell.editors.TrimEditor; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.CellType; diff --git a/hutool-poi/src/main/java/cn/hutool/poi/excel/editors/NumericToIntEditor.java b/hutool-poi/src/main/java/cn/hutool/poi/excel/cell/editors/NumericToIntEditor.java similarity index 91% rename from hutool-poi/src/main/java/cn/hutool/poi/excel/editors/NumericToIntEditor.java rename to hutool-poi/src/main/java/cn/hutool/poi/excel/cell/editors/NumericToIntEditor.java index bee2bf174..b78f1ecfe 100644 --- a/hutool-poi/src/main/java/cn/hutool/poi/excel/editors/NumericToIntEditor.java +++ b/hutool-poi/src/main/java/cn/hutool/poi/excel/cell/editors/NumericToIntEditor.java @@ -1,4 +1,4 @@ -package cn.hutool.poi.excel.editors; +package cn.hutool.poi.excel.cell.editors; import org.apache.poi.ss.usermodel.Cell; diff --git a/hutool-poi/src/main/java/cn/hutool/poi/excel/editors/TrimEditor.java b/hutool-poi/src/main/java/cn/hutool/poi/excel/cell/editors/TrimEditor.java similarity index 90% rename from hutool-poi/src/main/java/cn/hutool/poi/excel/editors/TrimEditor.java rename to hutool-poi/src/main/java/cn/hutool/poi/excel/cell/editors/TrimEditor.java index ed438a700..d13358a39 100644 --- a/hutool-poi/src/main/java/cn/hutool/poi/excel/editors/TrimEditor.java +++ b/hutool-poi/src/main/java/cn/hutool/poi/excel/cell/editors/TrimEditor.java @@ -1,4 +1,4 @@ -package cn.hutool.poi.excel.editors; +package cn.hutool.poi.excel.cell.editors; import org.apache.poi.ss.usermodel.Cell; diff --git a/hutool-poi/src/main/java/cn/hutool/poi/excel/editors/package-info.java b/hutool-poi/src/main/java/cn/hutool/poi/excel/cell/editors/package-info.java similarity index 61% rename from hutool-poi/src/main/java/cn/hutool/poi/excel/editors/package-info.java rename to hutool-poi/src/main/java/cn/hutool/poi/excel/cell/editors/package-info.java index 10b2a9eef..77d9c7f56 100644 --- a/hutool-poi/src/main/java/cn/hutool/poi/excel/editors/package-info.java +++ b/hutool-poi/src/main/java/cn/hutool/poi/excel/cell/editors/package-info.java @@ -3,4 +3,4 @@ * @author looly * */ -package cn.hutool.poi.excel.editors; \ No newline at end of file +package cn.hutool.poi.excel.cell.editors;