From 4db52c35ce690f1ea58363cf7aa97e4e23d72343 Mon Sep 17 00:00:00 2001 From: zhaoqichao <1416537683@qq.com> Date: Wed, 12 Jul 2023 10:24:20 +0800 Subject: [PATCH] =?UTF-8?q?fix:url=E8=A7=A3=E6=9E=90=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E6=97=B6=E8=BF=9B=E8=A1=8C=E9=93=BE=E6=8E=A5=E6=9C=89=E6=95=88?= =?UTF-8?q?=E6=80=A7=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../utils/discover/AbstractUrlDiscover.java | 33 ++++++++++++++++++- .../utils/discover/CommonUrlDiscover.java | 16 +++++---- .../common/utils/discover/WxUrlDiscover.java | 3 +- 3 files changed, 43 insertions(+), 9 deletions(-) diff --git a/mallchat-common/src/main/java/com/abin/mallchat/common/common/utils/discover/AbstractUrlDiscover.java b/mallchat-common/src/main/java/com/abin/mallchat/common/common/utils/discover/AbstractUrlDiscover.java index 4da24e9..32cfaef 100644 --- a/mallchat-common/src/main/java/com/abin/mallchat/common/common/utils/discover/AbstractUrlDiscover.java +++ b/mallchat-common/src/main/java/com/abin/mallchat/common/common/utils/discover/AbstractUrlDiscover.java @@ -11,6 +11,9 @@ import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.springframework.data.util.Pair; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URL; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -59,7 +62,7 @@ public abstract class AbstractUrlDiscover implements UrlDiscover { return UrlInfo.builder() .title(getTitle(document)) .description(getDescription(document)) - .image(getImage(assemble(url),document)).build(); + .image(getImage(assemble(url), document)).build(); } @@ -83,4 +86,32 @@ public abstract class AbstractUrlDiscover implements UrlDiscover { return null; } + /** + * 判断链接是否有效 + * 输入链接 + * 返回true或者false + */ + public static boolean isConnect(String href) { + //请求地址 + URL url; + //请求状态码 + int state; + //下载链接类型 + String fileType; + try { + url = new URL(href); + HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); + state = httpURLConnection.getResponseCode(); + fileType = httpURLConnection.getHeaderField("Content-Disposition"); + //如果成功200,缓存304,移动302都算有效链接,并且不是下载链接 + if ((state == 200 || state == 302 || state == 304) && fileType == null) { + return true; + } + httpURLConnection.disconnect(); + } catch (Exception e) { + return false; + } + return false; + } + } diff --git a/mallchat-common/src/main/java/com/abin/mallchat/common/common/utils/discover/CommonUrlDiscover.java b/mallchat-common/src/main/java/com/abin/mallchat/common/common/utils/discover/CommonUrlDiscover.java index 2f3b842..dd55618 100644 --- a/mallchat-common/src/main/java/com/abin/mallchat/common/common/utils/discover/CommonUrlDiscover.java +++ b/mallchat-common/src/main/java/com/abin/mallchat/common/common/utils/discover/CommonUrlDiscover.java @@ -7,6 +7,10 @@ import org.jetbrains.annotations.Nullable; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URL; + /** * @author zhaoqichao * @date 2023/7/3 16:54 @@ -34,19 +38,17 @@ public class CommonUrlDiscover extends AbstractUrlDiscover { String image = document.select("link[type=image/x-icon]").attr("href"); //如果没有去匹配含有icon属性的logo String href = StrUtil.isEmpty(image) ? document.select("link[rel$=icon]").attr("href") : image; - //如果icon中已经包含了url部分域名 - if (StrUtil.isNotBlank(StrUtil.removeAny(StrUtil.removeAny(href, "/"), "favicon.ico")) && - StrUtil.containsAny(StrUtil.removePrefix(url, "http://"), StrUtil.removeAny(StrUtil.removeAny(href, "/"), "favicon.ico"))) { - return "http://" + StrUtil.removePrefix(href, "/"); - } //如果url已经包含了logo if (StrUtil.containsAny(url, "favicon")) { return url; } - //如果logo中有url - if (StrUtil.containsAny(href, "http") || StrUtil.containsAny(href, "https")) { + //如果icon可以直接访问或者包含了http + if (isConnect(!StrUtil.startWith(href, "http") ? "http:" + href : href)) { return href; } + return StrUtil.format("{}/{}", url, StrUtil.removePrefix(href, "/")); } + + } diff --git a/mallchat-common/src/main/java/com/abin/mallchat/common/common/utils/discover/WxUrlDiscover.java b/mallchat-common/src/main/java/com/abin/mallchat/common/common/utils/discover/WxUrlDiscover.java index a5bb330..ccf193e 100644 --- a/mallchat-common/src/main/java/com/abin/mallchat/common/common/utils/discover/WxUrlDiscover.java +++ b/mallchat-common/src/main/java/com/abin/mallchat/common/common/utils/discover/WxUrlDiscover.java @@ -25,6 +25,7 @@ public class WxUrlDiscover extends AbstractUrlDiscover { @Nullable @Override public String getImage(String url, Document document) { - return document.getElementsByAttributeValue("property", "og:image").attr("content"); + String href = document.getElementsByAttributeValue("property", "og:image").attr("content"); + return isConnect(href) ? href: null; } }