From 11694bb428510e6185b012b529d97cb4ca9474d3 Mon Sep 17 00:00:00 2001 From: ljl <> Date: Wed, 5 Jul 2023 17:44:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E4=BA=BA=E6=89=8D=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E4=BB=A5=E5=8F=8A=E5=AD=A6=E4=BF=A1=E7=BD=91=E7=88=AC?= =?UTF-8?q?=E8=99=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/test/java/com/ruoyi/test/HttpReq.java | 179 ++++++++++++++++++ xueji.png | Bin 0 -> 1166 bytes 2 files changed, 179 insertions(+) create mode 100644 ruoyi-admin/src/test/java/com/ruoyi/test/HttpReq.java create mode 100644 xueji.png diff --git a/ruoyi-admin/src/test/java/com/ruoyi/test/HttpReq.java b/ruoyi-admin/src/test/java/com/ruoyi/test/HttpReq.java new file mode 100644 index 000000000..4f871b9a3 --- /dev/null +++ b/ruoyi-admin/src/test/java/com/ruoyi/test/HttpReq.java @@ -0,0 +1,179 @@ +package com.ruoyi.test; + +import cn.hutool.http.HttpUtil; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Node; +import org.jsoup.select.Elements; + +import java.io.File; +import java.io.FileOutputStream; +import java.util.List; +import java.util.concurrent.TimeUnit; + +public class HttpReq { + + //private OkHttpClient client = new OkHttpClient(); + private final Request.Builder builder = new Request.Builder(); + private final OkHttpClient client = new OkHttpClient.Builder() + .readTimeout(30, TimeUnit.SECONDS) + .connectTimeout(30, TimeUnit.SECONDS) + .writeTimeout(30, TimeUnit.SECONDS) + .build(); //设置各种超时时间 + + /** + @param isAddXuexinHeader 是否加入学信网header到请求头 + */ + public HttpReq(boolean isAddXuexinHeader){ + if (isAddXuexinHeader == true){ + builder.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); + builder.addHeader("Accept-Encoding","gzip, deflate, sdch, br"); + builder.addHeader("Accept-Language","zh-CN,zh;q=0.8"); + builder.addHeader("Cache-Control","max-age=0"); + builder.addHeader("Connection","keep-alive"); + builder.addHeader("Host","my.chsi.com.cn"); + builder.addHeader("If-Modified-Since","Tue, 13 Mar 2018 10:14:31 GMT"); + builder.addHeader("Upgrade-Insecure-Requests","1"); + builder.addHeader( "User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"); + } + } + + /** + @param cookie 加入cookie到请求头 + */ + public void addCookieToHeader(String cookie){ + builder.addHeader("cookie",cookie); + } + + /** + @param url get请求的url + */ + public String get(String url) { + builder.url(url); + final Request request = builder.build(); + try (Response response = client.newCall(request).execute()) { + return response.body().string(); + }catch (Exception e){ + e.printStackTrace(); + return ""; + } + } + + /** + @param url 图片的地址 + * */ + public void savePicture(String url) { + builder.url(url); + final Request request = builder.build(); + try (Response response = client.newCall(request).execute()) { + byte[] bt = response.body().bytes(); + byte2image(bt, "./xueji.png"); + }catch (Exception e){ + e.printStackTrace(); + } + } + + private void byte2image(byte[] data,String path){ + try { + File file = new File(path); + FileOutputStream fos = new FileOutputStream(file); + fos.write(data, 0, data.length); + fos.flush(); + fos.close(); + System.out.println("保存图片成功。。"); + } catch (Exception e) { + e.printStackTrace(); + } + } + + + public static void testBaidu(){ + HttpReq baiduHttp = new HttpReq(false); + String respStr = baiduHttp.get("http://www.baidu.com"); + System.out.println(respStr); + } + + public static void main(String[] args) { + // testBaidu(); +// HttpReq xuexinHttp = new HttpReq(true); +// xuexinHttp.addCookieToHeader("aliyungf_tc=a44cd76725072e97c6625bc216dcf07870bb8f59efdab8e85142cd2903f45841; acw_tc=707c9f7216885291604143483e1ffdbde1d42ca14b99ec2b9ec8d2c48e0eb1; JSESSIONID=92648EE2F4820DEDD6FB627E7F9DFABE; CHSICC_CLIENTFLAGCHSI=d6d1556d12784a270db64720aa7652f7; goaYXsyEWlxdO=60.I6m8rZy8fEGYpPmjsxJzcQD7H_fstonBF3XyGvvyhDh1_7c_JIFFrAfHsmKk6KtOVWbM2ztenFjMrPRSWIm1a; Hm_lvt_9c8767bf2ffaff9d16e0e409bd28017b=1688529126; zg_did=%7B%22did%22%3A%20%22189242dc17d992-0d47d539a4c70c-3d267449-144000-189242dc17e9f3%22%7D; _gid=GA1.3.678250233.1688529126; CHSICC01=!bLuJc+pYd0Ah1bvzYxYLahOzddj6Y5Wo66QcNq34LuAZUVPejROt5X6Oa37p4b53SrFxCblP8+yMsQ==; zg_14e129856fe4458eb91a735923550aa6=%7B%22sid%22%3A%201688529125761%2C%22updated%22%3A%201688529387258%2C%22info%22%3A%201688529125764%2C%22superProperty%22%3A%20%22%7B%7D%22%2C%22platform%22%3A%20%22%7B%7D%22%2C%22utm%22%3A%20%22%7B%7D%22%2C%22referrerDomain%22%3A%20%22%22%7D; Hm_lpvt_9c8767bf2ffaff9d16e0e409bd28017b=1688529387; _gat_gtag_UA_100524_1=1; _ga_8YMQD1TE48=GS1.1.1688529126.1.1.1688529387.0.0.0; _ga=GA1.1.2127309674.1688529126; goaYXsyEWlxdP=0jBX.aMEoAQAFi9Gmc9MppqIgDOlO8y_aQsmwyuvCdpbPOREblHy3rBYZ3akqvFSvw4wcAomCzMD_pFYl8MVkZ2D23rBjUNOxrqv.5iDjY66XvY1Pna6naF2xfKgvnvDTi5eOmrfSMgXiCW0EXcoGodkTJzbf6zmAqNcyw9aqpiBX980BsYj_Cgp5dDZvXxPK6yti7dHIQ_Oc7fWCOHPmjc7fRt.Xb0WxDqaQ7nQHckj9in8oSZf6uK6M5cjzp804QvVOiUoBq07KdCj_jVLIJndVclyF8iiT5Y5ytnCRogjhcgk_iGonLzXlugXQ7gfCbLlgqtmvJCIkhX99I0PwWYJ_Y5xuQuDhUM7kfwqBJSxm6MrozS7XHgvpKxTtg7pwg07awfezZWbh4ZCNidpXf5E90ppv4hFizfKH7ZUgQ0a"); //由webview执行js返回。 +// xuexinHttp.savePicture("https://www.chsi.com.cn/xlcx/bg.do?vcode=AA33TE9X16WA202D&srcid=bgcx"); //由webview执行js返回。 + String s = HttpUtil.get("https://www.chsi.com.cn/xlcx/bg.do?vcode=AA33TE9X16WA202D&srcid=bgcx"); + parseXueJi(s); + + } + + /** + * 学籍解析 + */ + private static void parseXueJi(String strHtml) { + Document doc = Jsoup.parse(strHtml, "UTF-8"); + Elements eleDiv2 = doc.getElementsByClass("report-info"); + if (eleDiv2 != null && !eleDiv2.isEmpty()) { + Elements eleTd = eleDiv2.get(0).getElementsByTag("div"); + String text = eleTd.get(4).text(); + /* if (eleTd != null && !eleTd.isEmpty()) { + StuInfo stuInfo = new StuInfo(); + // 姓名是图片,调用腾讯API实现ocr识别 + String nameImg = eleTd.get(1).getElementsByTag("img").get(0).attr("src"); + stuInfo.setName(aiOcr(nameImg)); + stuInfo.setGender(eleTd.get(4).text()); + stuInfo.setIdCard(eleTd.get(6).text()); + stuInfo.setNation(eleTd.get(8).text()); + stuInfo.setBirthDay(eleTd.get(10).text()); + stuInfo.setUniversity(eleTd.get(12).text()); + stuInfo.setLevel(eleTd.get(14).text()); + stuInfo.setDepartment(eleTd.get(16).text()); + stuInfo.setSClass(eleTd.get(18).text()); + stuInfo.setDomain(eleTd.get(20).text()); + stuInfo.setStuNum(eleTd.get(22).text()); + stuInfo.setForm(eleTd.get(24).text()); + stuInfo.setEntranceDate(eleTd.get(26).text()); + stuInfo.setLenOfSchooling(eleTd.get(28).text()); + stuInfo.setType(eleTd.get(30).text()); + String[] status = eleTd.get(32).text().split("\\("); + stuInfo.setStatus(status[0]); + stuInfo.setGraduationDate(status[1].substring(0, status[1].length() - 1));*/ +// return stuInfo; +// } + } +// return null; + } + + /** + * 学历解析 + */ + /*private static StuInfo parseXueLi(String strHtml) { + Document doc = Jsoup.parse(strHtml, "UTF-8"); + Elements eleDiv2 = doc.getElementsByClass("div2"); + if (eleDiv2 != null && !eleDiv2.isEmpty()) { + Elements eleTd = eleDiv2.get(0).getElementsByTag("td"); + if (eleTd != null && !eleTd.isEmpty()) { + StuInfo stuInfo = new StuInfo(); + // 姓名是图片,调用腾讯API实现ocr识别 + String nameImg = eleTd.get(0).getElementsByTag("img").get(0).attr("src"); + stuInfo.setName(aiOcr(nameImg)); + stuInfo.setGender(eleTd.get(2).text()); + stuInfo.setBirthDay(eleTd.get(3).text()); + stuInfo.setEntranceDate(eleTd.get(4).text()); + stuInfo.setGraduationDate(eleTd.get(5).text()); + stuInfo.setType(eleTd.get(6).text()); + stuInfo.setLevel(eleTd.get(7).text()); + stuInfo.setUniversity(eleTd.get(8).text()); + stuInfo.setLenOfSchooling(eleTd.get(9).text()); + stuInfo.setDomain(eleTd.get(10).text()); + stuInfo.setForm(eleTd.get(11).text()); + stuInfo.setCertificateNum(eleTd.get(12).text()); + // 状态是图片,调用腾讯API实现ocr识别 + String statusImg = eleTd.get(13).getElementsByTag("img").get(0).attr("src"); + stuInfo.setStatus(aiOcr(statusImg)); + stuInfo.setPresident(eleTd.get(14).text()); + return stuInfo; + } + } + return null; + }*/ +} diff --git a/xueji.png b/xueji.png new file mode 100644 index 0000000000000000000000000000000000000000..b2998d92313f21dbc0b65ab25b4be1c89e7dea96 GIT binary patch literal 1166 zcmV;91abQxiwFP!000041C>_IkK05Pzrewf@;?kls8q6J$D92~>O_=nLOJjuZ7b0e zn%EP2w6@30jI*0o+z`-v1>#dG2aXj&;?e{CXV|6tU+`we6B0EmM4~A1n>X+Me(y8! z8+SfBzW3ncDavJ8OuC)8{YLPLbAnTlso&}qmqcQe|qXJ^KN`V6V3!%Nb~^TCG>`eUZ35b9?cGB!-M1f;q(rGbMI1)0RclN zxDx2ScU{n$AI)D|>;vQzTAnl&K!-CQ(nA-m*Me5W&k4pMeT@o%S)QNRe(ljlI zx!djZ&N#07{i9IXaCB)wuEOvwP;l1aM!1p8TbYvq9Fi6uOLFveto`yt=s8#-YH2+F=AD*LL%XWR0ykjE@|a&HV_)2 z!QozSZ}U~3-_%SjhHZ{kx`k{I9RSb&h6Y(xZ);=Qavs?X+K5NcEs#cK+my;y3GGE| z`9_DSJFT{@eIVCLwBA`;f`_4MAb_+R&W2QnW6O7Be7CjX&zY30gjj~!xwC;scRb|G zf*B5n#_P3y=Qug_p(lxUn^I9182WTxu;di3+G6O3hN)v)$~xZyYK1nWp)C|gxyiU1 zb5Ox%Nc0bn4v7lN8tr1Cy4Nu+<#U|UMgUF2a%WNR;C_9G*HlM2gATR%*M?J)Fb<1@ z!B|jDuW+y$CsaZ(!rnTH*z0!i2uPpmA4@8zB&m*_a+0 zkYG@9m}oWTFrw7a^&lImQt&V8q~Ssh;hNEQx;fewY$`=gqXb5gKm?2ROo{_N@nDO< zf(hDP9IM5lc4eH>B}xh`#Ms?ALF`1+n{|hFnYoi#O--{^T{Z1oWNK;LJ_(+TUA54~ zCf9EpbLfuzKjXSYRgh>MC;)E@0b(rvUIO+)kWFlZ&sO zUp@KmujgL^ugFMu(sBRaI$pcLDCcA`b^{l-8_(3gl}}CL;NOIa*}C%F$;%f{E`Ip= g>ep{zug3w_(QVPx# literal 0 HcmV?d00001