说明:通过公众号URL获取的内容,文字可以正常显示,但是图片存在跨域访问的问题,微信不允许跨域访问公众号图片,所以需要将公众号图片从存入本地后,再上传至OSS,然后把HTML中的图片全部替换为自己的OSS地址就可以了
这里就需要在后台对HTML进行DOM的解析,需要用的Jsoup
& lt; dependency> & lt; groupId> com.aliyun.oss & lt; artifactId> aliyun-sdk-oss & lt; version> 2.2.3 & lt;/dependency> & lt; dependency> & lt; groupId> org.jsoup & lt; artifactId> jsoup & lt; version> 1.9.2 & lt;/dependency> >之前 控制器
包com.iueang.controller; 进口java.io.File; 进口java.util.HashMap; 进口java.util.Map; 进口org.jsoup.Jsoup; 进口org.jsoup.nodes.Document; 进口org.jsoup.nodes.Element; 进口org.jsoup.select.Elements; 进口org.springframework.stereotype.Controller; 进口org.springframework.web.bind.annotation.RequestMapping; 进口org.springframework.web.bind.annotation.ResponseBody; 进口com.iueang.util.DownLoadImg; 进口com.iueang.util.GetBody; 进口com.iueang.util.OssUtil2; 进口com.iueang.util.UrlUtil; @ controller 公开课TestUrl { @RequestMapping (“tohtml”) 公共字符串tohtml () { 返回“html/index . html”; } @RequestMapping (“getHtml”) @ResponseBody 公共Map<字符串,String>getHtml(字符串url) {//获取url文章生成文本 字符串html=UrlUtil.getAccess (url); 字符串reg=" & lt; html> (* & # 63;) & lt;/html>”; 头=GetBody字符串。getSubUtilSimple (html、注册); 字符串HTTPHOST=" http://yueang2.oss-cn-qingdao.aliyuncs.com/testimg/"; 字符串newsBody=头; 文档doc=Jsoup.parse (newsBody); 元素png=doc.select (“img [data-src]”); System.out.println (png); (元素元素:png) {//获取图片地址 字符串imgUrl=element.attr (“data-src”);//下载图片到本地 字符串文件名=DownLoadImg.downloadPicture (imgUrl); 文件文件=新文件(“D: \ \ m2 \ \”+文件名);//上传至oss 布尔标志=OssUtil2。uploadFileToOss(文件,“testimg/?文件名); 如果(国旗){ file.delete (); } 字符串newsrc=https://www.yisu.com/zixun/HTTPHOST +文件名; 元素。attr (" src ", newsrc); } newsBody=doc.toString (); System.out.println (newsBody); String> Map<字符串;地图=new HashMap<字符串,String> (); 地图。把(“resultHtml”, newsBody); 返回地图; } } >之前util工具类
GetBody类
包com.iueang.util; 进口java.util.regex.Matcher; 进口java.util.regex.Pattern; 公开课GetBody { 公共静态字符串getSubUtilSimple (html字符串,字符串注册){ 模式模式=Pattern.compile (reg);//匹配的模式 匹配器m=pattern.matcher (html); 而(m.find ()) { 返回m.group (1); } 返回"; } } >之前OssUtil类
包com.iueang.util; 进口java.io.File; 进口java.util.HashMap; 进口java.util.Map; 进口com.aliyun.oss.OSSClient; 进口com.aliyun.oss.model.ObjectMetadata; 公开课OssUtil2 {//以下几个参数值必填,参考文章最后文档 静态字符串端点=" http://oss-cn-qingdao.aliyuncs.com "; 静态字符串accessKeyId=" oss获取”; 静态字符串accessKeySecert=" oss获取”; 静态字符串bucketName=" yueang2”;/* * *上传单个文件到OSS * @param文件要上传的文件文件对象 * @param objName上传后的文件名,包含文件夹,比如游戏/比赛/用法 * @return */公共静态布尔uploadFileToOss(文件文件、字符串objName) { 尝试{ OSSClient OSSClient=零; 尝试{ ossClient=new ossClient(端点,accessKeyId, accessKeySecert); }捕捉(异常e) { e.printStackTrace (); } ObjectMetadata元=new ObjectMetadata (); ossClient。putObject (bucketName、objName、文件、元); ossClient.shutdown (); }捕捉(异常e) { e.printStackTrace (); 返回错误; } 返回true; } } >之前DownLoadImg类
Java通过URL获取公众号文章生成HTML的方法