diff --git a/hutool-http/src/main/java/cn/hutool/http/useragent/Browser.java b/hutool-http/src/main/java/cn/hutool/http/useragent/Browser.java index d9b24fa58..bc1510d20 100644 --- a/hutool-http/src/main/java/cn/hutool/http/useragent/Browser.java +++ b/hutool-http/src/main/java/cn/hutool/http/useragent/Browser.java @@ -45,7 +45,8 @@ public class Browser extends UserAgentInfo { new Browser("Yammer Desktop", "AdobeAir", "([\\d\\w\\.\\-]+)\\/Yammer"), // new Browser("Yammer Mobile", "Yammer[\\s]+([\\d\\w\\.\\-]+)", "Yammer[\\s]+([\\d\\w\\.\\-]+)"), // new Browser("Apache HTTP Client", "Apache\\\\-HttpClient", "Apache\\-HttpClient\\/([\\d\\w\\.\\-]+)"), // - new Browser("BlackBerry", "BlackBerry", "BlackBerry[\\d]+\\/([\\d\\w\\.\\-]+)")// + new Browser("BlackBerry", "BlackBerry", "BlackBerry[\\d]+\\/([\\d\\w\\.\\-]+)"),// + new Browser("MicroMessenger", "MicroMessenger", "MicroMessenger\\/([\\d\\w\\.\\-]+)")// ); private Pattern versionPattern; diff --git a/hutool-http/src/test/java/cn/hutool/http/useragent/UserAgentUtilTest.java b/hutool-http/src/test/java/cn/hutool/http/useragent/UserAgentUtilTest.java index fb4471a97..ae50bd6cf 100644 --- a/hutool-http/src/test/java/cn/hutool/http/useragent/UserAgentUtilTest.java +++ b/hutool-http/src/test/java/cn/hutool/http/useragent/UserAgentUtilTest.java @@ -188,4 +188,20 @@ public class UserAgentUtilTest { Assert.assertEquals("Windows", ua.getPlatform().toString()); Assert.assertFalse(ua.isMobile()); } + + /** + * https://github.com/looly/hutool/issues/1177 + */ + @Test + public void parseMicroMessengerTest() { + String uaString = "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Mobile/15A372 MicroMessenger/7.0.17(0x17001127) NetType/WIFI Language/zh_CN"; + UserAgent ua = UserAgentUtil.parse(uaString); + Assert.assertEquals("MicroMessenger", ua.getBrowser().toString()); + Assert.assertEquals("7.0.17", ua.getVersion()); + Assert.assertEquals("Webkit", ua.getEngine().toString()); + Assert.assertEquals("604.1.38", ua.getEngineVersion()); + Assert.assertEquals("iPhone", ua.getOs().toString()); + Assert.assertEquals("iPhone", ua.getPlatform().toString()); + Assert.assertFalse(ua.isMobile()); + } }