Este artículo comparte información sobre la simulación de Java Inicie sesión en los asuntos académicos de Zhengfang para capturar resultados, horarios de clases, aulas vacías, etc. para su referencia. El contenido específico es el siguiente
1.jwgl.java
paquete com.ican.yueban.jwgl; import java.io.ioException; import java.io.inputstream; import java.util.arrayList; import java.util.list; import java.util.scanner; importar org.apache.http.httpponse; import org.apache.http.nameValuePair; import org.apache.http.client.clientprotocolexception; import org.apache.http.client.entity.urlencodedforcmentity; importación; importación; org.apache.http.client.methods.closEablehttTpesponse; import org.apache.http.client.methods.httpget; import org.apache.http.client.methods.httpost; import org.apache.http.impl.cleClient org.apache.http.impl.client.httpclients; importar org.apache.http.impl.client.httpclients; import org.apache.http.message.basicnameValuePair; import org.jsoup.jsoup; import org.jsoup.nodes.documument; import ogument; import import com.ican.yueban.utils.dateutils; import com.ican.yueban.utils.globalconstant; import com.ican.yueban.utils.ioutils; import com.ican.yubeban.utils.parseutils; clase pública JWGL {cadena estática privada stunumber = ""; cadena estática privada stuname = ""; Cadena estática privada cookie = ""; String private indexUrl = globalconstant.index_url; String private SecretCodeUrl = GlobalConstant.SecretCode_Url; cadena privada loginurl = globalconstant.login_url; Cadena privada MainUrl = GlobalConstant.Main_url; String private QueryClassroomurl = GlobalConstant.Query_classroom_url; Cadena privada QueryClassroomGnmkdm = GlobalConstant.Query_classroom_gnmkdm; Cadena privada QuerystugradeUrl = GlobalConstant.Query_stu_grade_url; Cadena privada Querystugradegnmkd = GlobalConstant.Query_stu_grade_gnmkdm; Cadena privada QueryStucourseUrl = GlobalConstant.Query_stu_course_url; Cadena privada QueryStucourseGnmkd = GlobalConstant.Query_stu_course_gnmkdm; cadena privada xixiaoqu = globalconstant.xixiaoqu; Private String IdentityStu = GlobalConstant.Identity_stu; / ** * Función de inicio de sesión * * @param stunumber * @param contraseña * @return * @throws excepción * @throws unsupportedoperationException */ public boolean login (cadena stunumber, contraseña de cadena) lanza no comportaciónePerationException, excepción {this.stunumber = stunumber; // Obtener el código de verificación httpget secretCodeget = new httpget (secretCodeUrl); ClosableHttpClient Client = httpclients.createDefault (); CierreHttPResponse ResponsesECret = Client.Execute (SecretCodeget); // Obtenga la cookie Cookie devuelta = Respuesta-Secret.getFirStheader ("Set-Cookie"). GetValue (); String ViewState = ioutils.getViewState (indexurl, "", ""); // Descargue el código de verificación en el disco C ioutil.getSecret (ResponsesECret.getEntity (). GetContent (), "SecretCode.png", "c: //"); Escáner sc = new Scanner (System.in); System.out.println ("Ingrese el código de verificación:"); // Complete manualmente el valor del código de verificación que acaba de obtener String Secret = Sc.Next (). Trim (); HttpPost loginPost = new httpPost (loginurl); // crea una solicitud loginPost loginPost.setheader ("cookie", cookie); // traiga la primera lista de cookies solicitada <nameValueAir> nameValuePairLogin = new ArrayList <NameValuePairir> (// Encapsule Post SubmubSeters nameValue .add (nuevo BasicNameValuePair ("__ ViewState", ViewState)); // ocultar el valor de formulario nameValuePairLogin .add (new BasicNameValuePair ("Txtusername", stunumber))); // Student Id nameValuePairLogin.add (new BasicNameValuePair nameValuePairLogin.add(new BasicNameValuePair("txtSecretCode", secret));// Verification code nameValuePairLogin.add(new BasicNameValuePair("RadioButtonList1", identityStu));// Identity, default student nameValuePairLogin.add(new BasicNameValuePair("Button1", "")); nameValuePairLogin.add (nuevo BasicNameValuePair ("lblanguage", "")); nameValuePairLogin.Add (new BasicNameValuePair ("Hidpdrs", "")); nameValuePairLogin.Add (new BasicNameValuePair ("Hidsc", "")); UrlencodedFormentity Entity = New UrlencodedFormentity (nameValuePairlogin, "GB2312"); LoginPost.SetEntity (entidad); HttpResponse ResponseLogin = Client.execute (LoginPost); // Client1.Close (); // Paso 3: Determine si los datos enviados son exitosos y devuelven 302 con éxito if (ResponseLogin.getStatusLine (). GetStatUscode () == 302) {// Si el envío es exitoso, solicite la página principal redirigida con una cookie y obtenga el nombre del alumno httpget mainget = new httpget (mainurl + stunumber); Mainget.Setheader ("Cookie", Cookie); mainget.setheader ("referente", loginurl); HttpResponse ResponseMain = Client.execute (mainget); InputStream IS = ResponseMain.GetEntity (). GetContent (); Cadena html = ""; intente {html = ioutils.gethtml (es, "gb2312"); } catch (Exception e) {System.out.println ("¡Fallado de html!"); E.PrintStackTrace (); } stuname = jSoup.Parse (html) .getElementById ("xhxm"). Text (); System.out.println ("¡Iniciar sesión con éxito! Bienvenido:" + STUNAME); client.close (); devolver verdadero; } else {System.out.println ("¡Iniciar sesión!"); client.close (); devolver falso; }} / ** * consulta el aula vacía * * @throws excepción * * @throws excepción * / public void QueryClassroom (string xiaOqu, string xqj, string sjd) arroja excepción {cerradorhttpclient cliente = httpclients.createDefault (); String newQueryClassRommurl = QueryClassroomurl + Stunumber + "& xm =" + Stuname + QueryClassroomGnmkdm; // Url para empalmar la solicitud String parsesjd = parseutils.parseweek (sjd); // la cadena corresponde a la sección actual de la sección nowweek = dateTin. Ioutils.getViewState (newQueryClassRommurl, Cookie, Mainurl + STUnumber); // Consulta encapsulada Lista de parámetros de solicitud de aula vacía <NameValuePair> QueryClassOroomPair = new ArrayList <nameValuePair> (); QueryClassroomPair.add (nuevo BasicNameValuePair ("__ EventTarget", "")); QueryClassroomPair.add (nuevo BasicNameValuePair ("__ EventArgument", "")); QueryClassroomPair .Add (nuevo BasicNameValuePair ("__ ViewState", ViewState)); QueryClassroomPair.Add (nuevo BasicNameValuePair ("XiaoQ", Xiaoqu)); // Campus Tipo, predeterminado a West Campus QueryClassroomPair.add (new BasicNameValuePair ("JSLB", "" ")); // Categoría de clases, por defecto a la QueryClassAshorpair.add (New BasicNameValValValValePair (", "Minea de clase", Min. "0")); // El número mínimo de asientos, predeterminado a 0 QueryClassroomPair.Add (new BasicNameValuePair ("Max_ZWS", "")); // El número máximo de asientos, predeterminado a la primera semana vacía. QueryClassroomPair.Add (nuevo BasicNameValuePair ("DDLJSZ", NowWeek)); // finaliza la semana, predeterminado a la semana actual QueryClassoraPair.add (New BasicNameValuePair ("XQJ", XQJ)); // en el día de la semana, predeterminado hasta el día de QueryClassroomPair. BasicNameValuePair ("ddldsz", "")); // Para semanas impares y dobles, predeterminado a QueryClassArmassPair.Add (nuevo BasicNameValuePair ("SJD", parsesjd)); // qué sección QueryClassArmasePair.add (New BasicNameValuePair ("Button2", "Vacente de clase")))))); QueryClassroomPair.add (nuevo BasicNameValuePair ("Xn", "2015-2016")); QueryClassroomPair.add (nuevo BasicNameValuePair ("XQ", "2")); QueryClassroomPair.add (nuevo BasicNameValuePair ("DDLSYXN", "2015-2016")); QueryClassroomPair.Add (nuevo BasicNameValuePair ("ddlsyxq", "2")); Urlencoded Formentity EntityClassroom = nueva Formentity de Urlencoded (QueryClassroomPair); Httppost queryClassroomPost = new httpPost (newQueryClassRommurl); // NewQueryClassRommurl Ejemplo: http://jwgl2.ujn.edu.cn/xxjsjy.aspx?xh=20121214104&xm=xxx&gnmkdm=n121611 QueryClassoomPost.SetEntity (EntityClassap.); QueryClassroomPost.Setheader ("Referente", MainUrl + Stunumber); // establece información de encabezado QueryClassOrbost.Setheader ("Cookie", Cookie); HttpResponse ResponseClassroom = Client.execute (QueryClassroomPost); InputStream es = ResponseClassroom.GetEntity (). GetContent (); Cadena html = ioutils.gethtml (es, "GB2312"); Documento doc = JSoup.Parse (html); Elementos eleClassroom = doc.select ("td"); Elements eleinfo = doc.select ("#lblbt"); System.out.println (eleinfo.get (0) .Text ()); for (int i = 0; i <eleclassroom.size (); i ++) {// solo imprima el nombre del aula if (i % 8 == 1) {system.out.println (eleclassroom.get (i) .Text ()); }} client.close (); }/ ** * Consulta de sobrecarga El método de clase vacío, tiempo predeterminado y método de consulta sin parámetros para las sesiones de cursos * * @throws ioexception * @throws clientProtocolException */ public void queryclassroom () lanza ClientProtocoleException, ioexception, excepción {string weekday = dateutils.getwayday () + ""; DateUtils.getNowCourse () + ""; // Obtenga la hora actual qué lección es nueva jwgl (). QueryClassroom (Xixiaoqu, Weehday, SDJ); } / ** * Método de puntaje personal de consulta * * @throws ClientProtocolException * @throws ioException * / public void QueryStugrade (String Xn, String XQ) lanza ClientProtocolException, ioException {ClosableHttpClient Client = httpClients.CreateDeFault ();; String NewQueryStuGradeUrl = QueryStuGradeUrl + STUnumber + "& xm =" + Stuname + QueryStugradEgnmkd; Httppost querygradepost = new httpPost (newQuerystugradeUrl); String ViewState = ioutils.getViewState (NewQueryStuGradeUrl, Cookie, MainUrl + STUnumber); // Lista de parámetros de solicitud de encapsulación <NameValuePair> QUERYGRADEPAIR = new ArrayList <NameValuePair> (); QueryGradePair.add (nuevo BasicNameValuePair ("__ EventTarget", "")); QueryGradePair.add (nuevo BasicNameValuePair ("__ EventArgument", "")); QueryGradePair.Add (nuevo BasicNameValuePair ("__ ViewState", ViewState)); QueryGradePair.add (nuevo BasicNameValuePair ("Hidlanguage", "")); QueryGradePair.add (new BasicNameValuePair ("ddlxn", xn))); // School Year QueryGradePair.add (new BasicNameValuePair ("ddlxq", xq)); // Semester QueryGradePair.add (newNameValuePairir ("ddl_kcxz", ""); ");"););); QueryGradePair.Add (new BasicNameValuePair ("btn_xq", "segundo grado")); QueryGradepost.Setheader ("Cookie", Cookie); QueryGradepost.setheader ("Referente", Mainurl + Stunumber); UrlencodedFormentity EntityGrade = nueva URLEncodedFormentity (QueryGradePair); QueryGradepost.SetEntity (EntityGrade); HttpResponse ResponsequeryGradePost = Client.execute (QueryGradePost); String gradohtml = ioutils.gethtml (ResponqueryGradepost.getEntity () .getContent (), "GB2312"); // system.out.println (gradohtml); Documento gradual = JSoup.Parse (gradohtml); Elementos elegade = gradedoc.select ("td"); // analiza el contenido de etiqueta html <td> según sea necesario y la salida para (int i = 0; i <7; i ++) {System.out.println (elegade.get (i) .Text ()); } for (int i = 11; i <elegade.size (); i = i + 10) {if (i + 15 <elegade.size ()) {system.out.print (elegade.get (i) .Text () + ""); i = i + 5; System.out.print (elegade.get (i) .Text ()); System.out.println (); } client.close (); }} / ** * Método de programación de clases personales de consulta * * @param xnd * @param xqd * @throws clientProtocolexception * @throws ioexception * / public void Querystucourse (String Xnd, String XQD) lanza ClientProtocolEcception, ioexception {cerrador de cierraHtttpClient CLIENT = httpClients.creTreate ();););););) String NewQueryStucourseUrl = QueryStucourseUrl + Stunumber + "& xm =" + Stuname + QueryStucourseGnmkd; String ViewState = ioutils.getViewState (NewQueryStucourseUrl, Cookie, MainUrl + STUnumber); Httppost QuerystucoursePost = new httpPost (newQueryStucourseUrl); Lista <NameValuePair> stucoursepair = new ArrayList <NameValuePair> (); stucoursepair.add (new BasicNameValuePair ("__ EventTarget", "xqd")); stucoursepair.add (new BasicNameValuePair ("__ EventArgument", "")); stucoursepair.add (new BasicNameValuePair ("__ ViewState", ViewState)); stucoursepair.add (new BasicNameValuePair ("Xnd", xnd)); stucoursepair.add (new BasicNameValuePair ("xqd", xqd)); Urlencoded Formentatity EntitySource = nueva Formentity de URLEncoded (stucoursePair); QueryStucoursePost.SetEntity (EntitySource); QuerystucoursePost.Setheader ("Cookie", Cookie); QuerystucoursePost.Setheader ("Referente", MainUrl + Stunumber); Httpresponse ResponseSTucourse = Client.Execute (QueryStucoursePost); String html = ioutils.gethtml (ResponseSeTucourse.getEntity () .getContent (), "GB2312"); Documento doccourse = JSoup.Parse (html); Elements eleCourse = docCourse.select ("td"); for (int i = 2; i <eleCourse.size (); i ++) {System.out.print (eleCourse.get (i) .Text ()+""); if (i % 9 == 0) {System.out.println (); }}} public static void main (string [] args) {jwgl jw = new jwgl (); intente {jw.login ("Aquí está el número de estudiante", "Aquí está la contraseña"); System.out.println ("Prueba de puntaje de consulta -------"); JW.Querystugrade ("2015-2016", "1"); // Consulta West Campus, lunes, Sección 12 Prueba de aula vacía. // jw.QueryClassroom ("1", "1", "2"); System.out.println ("Consulta prueba de clase vacía ------"); JW.QueryClassroom (); System.out.println ("Prueba de programación de clases personales de consulta --------"); JW.QueryStucourse ("2014-2015", "1"); } Catch (ClientProtocolexception e) {E.PrintStackTrace (); } catch (ioException e) {E.PrintStackTrace (); } catch (Exception e) {E.PrintStackTrace (); } // qq: 451209214}} 2.DateUtils.java
paquete com.ican.yueban.utils; import java.text.parseException; import java.text.simpledateFormat; import java.util.calendar; import java.util.date; clase pública dateutils {private static string startday = globalConstant.start_day; // Fecha de inicio Cadena estática privada Endday = GlobalConstant.end_day; // Fecha de vacaciones/*** Obtenga la clase actual que la clase es la hora actual, solo entre 8 y 16 en punto, y el valor predeterminado es 1 y 2 clases en otros momentos. * * @return */ public static int getNowCourse () {SimpleDateFormat df = new SimpleDateFormat ("HH: MM: SS"); // Establecer Formato de fecha String NowDate = df.format (new Date ()); if (ahoraDate.Startswith ("08") || NowDate.Startswith ("09")) {return 1; // 12 lecciones. } else if (nowDate.startswith ("10") || NowDate.Startswith ("11")) {return 2; // 34 lecciones, y así sucesivamente. } else if (nowDate.startswith ("12") || NowDate.Startswith ("13") || NowDate.Startswith ("14")) {return 3; } else if (nowDate.Startswith ("15") || NowDate.Startswith ("16")) {return 4; } else {return 1; }} / ** * Obtenga qué semana es la hora actual * * @return * / public static int getweek () {int days = 0; int Nowweek = 0; intente {SimpleDateFormat df = new SimpleDateFormat ("yyyy-mm-dd"); // Establezca la cadena de formato de fecha ahoraDate = df.format (new Date ()); int Nowdaysbetween = DaysBetween (Startday, Now Date) + 1; Days = DaysBetween (Startday, Finday); int x = hoy en día entre % 7; if (x == 0) {nowweek = Nowdaysbetween / 7; } else {nowweek = Nowdaysbetween / 7 + 1; }} Catch (ParseException e) {System.out.println ("La fecha de entrada es ilegal, la fecha de análisis falló"); E.PrintStackTrace (); } regresar noweek; } / ** * Obtenga la hora actual es el día de la semana * * @return * / public static int getweekday () {calendar cal = calendar.getInstance (); Cal.setTime (nueva fecha ()); if (cal.get (calendar.day_of_week) - 1 == 0) {return 7; } return cal.get (calendar.day_of_week) - 1; } / ** * Calcule el número de días entre dos fechas de tipo de cadena * * @param startday * @param endday * @return * @throws parseException * / public static int daysbetbetween (string startday, string endday) tira parseException {SimpleDateFormat sdf = new SimpleDateFormat ("yyyyy-mm-dd"); Calendario cal = calendario.getInstance (); Cal.setTime (SDF.Parse (Startday)); mucho tiempo1 = cal.gettimeinmillis (); Cal.SetTime (SDF.Parse (Endday)); mucho tiempo2 = cal.gettimeinmillis (); largo entre_days = (Time2 - Time1) / (1000 * 3600 * 24); return integer.parseInt (string.ValueOf (entre_days)); }/ ** * return String Type System System en aaayyy-mm-dd hh: mm: format ss * * @return */ public static string getNowDate () {SimpleDateFormat df = new SimpledateFormat ("yyyy-mm-dd hh: mm: ss"); // establece el format de fechas df.format (new date ());); }} 3.globalconstant.java
paquete com.ican.yueban.utils; /*** Todas las definiciones constantes de este sistema** @author Song Kaizong**/Public Interface GlobalConstant {public static final String start_day = "2016-02-29"; Cadena final Public Static Final End_day = "2016-07-10"; Public static final String index_url = "http://jwgl2.ujn.edu.cn"; // Página de inicio del sistema de asuntos académicos de Jida estática pública static final string secretcode_url = "http://jwgl2.ujn.edu.cn/checkcode.aspx" ;// VERIFICA "http://jwgl2.ujn.edu.cn/default2.aspx" ;// jida académico sistema de inicio de sesión de la página de inicio de sesión pública estática final_url =" http://jwgl2.ujn.edu.cn/Xs_Main.aspx?xh=" ;// jida Sistema académico Página de inicio de la casa de la casa del Menú Public Static static string querlonds. "http://jwgl2.ujn.edu.cn/xxjsjy.aspx?xh=" ;// jida consulta vacío enlaz del salón de clases Public static final cadena final query_classroom_gnmkdm =" & gnmkdm = n121611 "; // jida quiry shussroom gnmkdm public static string final string_stu "http://jwgl2.ujn.edu.cn/xskbcx.aspx?xh=" ;// jida consulta clásica personal enlace enlace público estática static final cadena consultal_stu_course_gnmkdm =" & gnmkdm = n121603 "; // jida consulta el curso personal del curso gnmkdm público static static string string string string string = "http://jwgl2.ujn.edu.cn/xscjcx.aspx?xh=" ;// jida indicador personal de puntaje personal enlaza pública static final cadena final_stu_grade_gnmkdm =" & gnmkdm = n121605 "; // jida indiry puntuación personal gnmkdm final static stating string string string string string string string string string string string string string string string string string string string string string string yoent string string indentity indentity indentity" Identidad: Estudiante público Public Static Final String XIXIAOQU = "1"; // Jidaxi Campus Logo Public Static Static Final String DongXiaOqu = "2"; // JiDadong Campus LOGO PUBLIC STARIC STATIC FINAL STRING ZHANGQIUXIAQU = "3"; // JIDA ZHANGQIU LOGO CAMPUS PUBLIC STATIC FINAL CADA CLASS1 = CLASS1 = = "'1' '|' 1 ',' 0 ',' 0 ',' 0 ',' 0 ',' 0 ',' 0 '"; // 1, 2 Cadena final estática Public static class2 = "' 2 '|' 0 ',' 3 ',' 0 ',' 0 ',' 0 ',' 0 ',' 0 ',' 0 ',', ''"; // Sección 3, 4 CLASE STATICA PÚBLICA FINAL CLASE3 = "'' 3 '|' 0 ',' 0 ',' 5 ',' 0 ',' 0 ',' 0 ',' 0 ',' 0 '"; // Sección 5, 6 Cadena de cadena final estática pública 4 = "' 4 '|' 0 ',' 0 ',' 0 ',' 0 ',' 7 ',' 0 ',' 0 ',' 0 '"; // Sección 7, 8 STATA STATIC CLASS5 = = "'5' | '0', '0', '0', '0', '9', '0', '0', '0'"; // 8, 10 Secciones públicas de cadena final estática Class6 = "'6' | '0', '0', '0', ',' 0 ',' 0 ',' 0 ',' 11 ',' 0 ',' 0 ',' 0 '";// 11, 12 Sectores Publics Class7 = "'7' | '1', '3', '0', '0', '0', '0', '0', '0'"; // 11, 12 Secciones públicas Public static final String class7 = "'7' | '1', '3', '0', '0', '0', '0', '0', '0'"; // 11, 12 Secciones Públicas Estatales Class8 = "'8' | '0', '0', '5', '7', '0', '0', '0', '0'"; // En la tarde pública estática estática final de cadena 9 = "'9' | '1', '3', '5', '7', '0', '0', '0', '0'"; // en la clasificación estatosa de Hach Strat Static de Daytime. "'10' | '0', '0', '0', '0', '0', '9', '11', '0', '0', '0'"; // en la noche pública estática estatizada final Class11 = "'11' | '1', '3', '5', '7', '9', '11', '0', '0', '0'";// Full Full STING STIN = "btn_xq"; // puntaje de semestre Cadena estática pública final Btn_xUenian = "btn_xn"; // anotaciones académicas de año público static final string final btn_linian = "btn_zcj"; // anotaciones anteriores de la cadena final de la string static universidad "1"; // Cadena final pública estática no certificada user_state_y = "2"; // certificado por public static final cadena final comment_type_newthings = "1"; // Comentario Tipo 1: Nueva cadena final pública Comment_type_interest = "2"; // Comentario Tipo 2: Actividad de interés} 4.ioutilss.java
paquete com.ican.yueban.utils; import java.awt.rectangle; import java.awt.image.bufferedImage; import java.io.bytearrayOutputStream; import java.io.file; import java.io.fileInputStream; import java.io.fileOutputStream; import java.io.ioxception; import java.io.inputstream; import; import java.io.outputstream; import java.net.url; import java.net.urlconnection; import java.util.iterator; import javax.imageio.imageio; import javax.imageio.imagereadparam; import javax.imageio.imageReader; import javax.imageio.stream.imageInputStream; importar org.apache.http.client.clientprotocolexception; import org.apache.http.client.methods.httpget; import org.apache.http.impl.client.closeablehttpClient; import org.apache.http.impl.htttpclients; import og.Jsup clase pública ioutils { / ** * Especifique el formato de codificación y convierta el flujo de entrada en una cadena * * @param es * @return * @throws ioexception * / public static string gethtml (inputStream is, string coding) lanza ioexception {bytearRauteutputPutput Bos = new bytearRayRayOutpututOutpututOutputut ();; byte [] buffer = new Byte [1024]; int len = 0; while ((len = is.read (buffer))! = -1) {bos.write (buffer, 0, len); } is.close (); return new String (bos.tobytearray (), codificación); } / ** * Descargar imagen * * @param urlString * @param filename * @param savePath * @throws excepción * / public static void descargar (string urlString, string fileName, string savePath) lanza excepción {// construye url url url = new url (urlString); // Abrir conexión urlconnection con = url.openconnection (); // Establecer el tiempo de espera de solicitud en 5S Con.SetConnectTimeOut (5 * 1000); // Input Stream InputStream es = Con.getInputStream (); // 1k Buffing de datos Byte [] bs = nuevo byte [1024]; // Leer longitud de datos int Len; // Archivo de archivo de salida Archivo SF = nuevo archivo (SavePath); if (! sf.exists ()) {sf.mkdirs (); } OutputStream OS = new FileOutputStream (sf.getPath () + "//" + nombre de archivo); // comienza a leer mientras ((len = is.read (bs))! = -1) {os.write (bs, 0, len); } // Completa, cierre todos los enlaces OS.Close (); is.close (); } / ** * Clase de herramienta de cultivo de imágenes * * @param src * @param dest * @param x * @param y * @param w * @param h * @throws ioexception * / public static void cutImage (string src, string dest, int x, int y w, int h) lanza ioexception {iterator iterator = iterator = = ImageIO.getImageReadersByFormatName ("jpg"); Imagereader lector = (ImageReader) Iterator.next (); InputStream in = new FileInputStream (SRC); ImageInputStream IIS = imageIO.CreateEmageInputStream (in); lector.setInput (IIS, verdadero); ImagereadParam param = lector.getDefaultreadParam (); Rectángulo rect = nuevo rectángulo (x, y, w, h); param.setSourCeregion (RECT); BufferedImage bi = lector.read (0, param); Imageio.write (bi, "jpg", nuevo archivo (des)); cercar(); } / ** * Juez Codificación de caracteres Conjunto * * @param str * @return * / public static string getencoding (string str) {string codeD = "gb2312"; Pruebe {if (str.equals (new String (str.getBytes (encode), encode))) {string s = encode; regreso s; }} Catch (excepción de excepción) {} encode = "ISO-8859-1"; Pruebe {if (str.equals (new String (str.getBytes (encode), encode)))) {string s1 = encode; regresar S1; }} capt (excepción excepción1) {} codende = "utf-8"; Pruebe {if (str.equals (new String (str.getBytes (encode), encode)))) {string s2 = encode; regresar S2; }} capt (excepción excepción2) {} codende = "gbk"; Pruebe {if (str.equals (new String (str.getBytes (encode), encode))) {string s3 = encode; regresar S3; }} capt (excepción excepción3) {} return "desconocido"; } / ** * Convierta el flujo de entrada en una imagen ---》 Obtenga el código de verificación * * @param IS * @param FileName * @param SavePath * @throws Exception * / public static void getSecret (inputStream is, string fileName, string save savePath) Excepción {// 1k buffer de datos byte [] bs = newte [1024]; // La longitud de datos de lectura int Len; // El archivo de transmisión del archivo de salida SF = nuevo archivo (SavePath); if (! sf.exists ()) {sf.mkdirs (); } OutputStream OS = new FileOutputStream (sf.getPath () + "//" + nombre de archivo); // comienza a leer mientras ((len = is.read (bs))! = -1) {os.write (bs, 0, len); } // termina, cierre todos los enlaces OS.Close (); is.close (); } / ** * Obtenga el valor __viewState del campo oculto * * * @param url * @param cookie * @param referente * @return * @throws UnsupportedOperationException * @throws ClientProtocolexception * @throws ioexception * / public static string string getViewState (string url, string referente) shosss sinpportedexception, string string getViewstate (string url, string referente) shosss sinpportedsception, string opersception, string opersception, string url (string url, string referente) shosss sinpportedsception, string opersception, string opersexcept ClientProtocolException, IOException {ClosableHttpClient Client = httpclients.createDefault (); Httpget getViewState = new httpget (url); getViewState.setheader ("Cookie", Cookie); getViewState.sEtheader ("Referente", Referente); // Establecer información de información del encabezado S = Ioutils.gethtml (Client.Execute (getViewState) .getEntity () .getContent (), "GB2312"); String ViewState = JSoup.Parse (s) .select ("input [name = __ ViewState]") .val (); client.close (); return ViewState; }} 5. parseutils.java
paquete com.ican.yueban.utils; clase pública parseutils { / ** * Obtenga la cadena correspondiente a la sesión del curso * @param curso * @return * / public static string parseweek (curso de cadena) {cadena sjd = ""; int NowCourse = Integer.ParseInt (curso); switch (NowCourse) {Caso 1: SJD = GlobalConstant.Class1; romper; Caso 2: SJD = GlobalConstant.Class2; romper; Caso 3: SJD = GlobalConstant.Class3; romper; Caso 4: SJD = GlobalConstant.Class4; romper; Caso 5: SJD = GlobalConstant.Class5; romper; Caso 6: SJD = GlobalConstant.Class6; romper; Caso 7: SJD = GlobalConstant.Class7; romper; Caso 8: SJD = GlobalConstant.Class8; romper; Caso 9: SJD = GlobalConstant.Class9; romper; Caso 10: SJD = GlobalConstant.Class10; romper; Caso 11: SJD = GlobalConstant.Class11; romper; predeterminado: sjd = globalconstant.class1; romper; } return sjd; }}Lo anterior se trata de este artículo, espero que sea útil para el aprendizaje de todos.