Este artículo comparte Java simula HTTP Get Post Solicitudes y la función de respuesta automática del campus BBS para su referencia. El contenido específico es el siguiente
Ideas de diseño
Encuentre la colección de enlaces de publicaciones y cambie el número al final, y puede obtener diferentes publicaciones
Evitar que las publicaciones se eliminen nuevamente y determine si la publicación existe
Iterar a través de esta colección y hacer una solicitud de publicación para responder a cada enlace
Puntos clave
Nota:
Código
El código es relativamente simple. La precaución es encontrar su propia galleta. Asigne a sucookie para encadenar a sucookie y ejecutarlo directamente.
Lo principal es determinar si la publicación existe o no. Esta es una solicitud GET, y luego envíe una respuesta con la publicación. El mensaje de respuesta está codificado como "amigable ayuda" en mapdata.put ("mensaje", "ayuda amigable"), puede modificarlo
import java.io.bytearrayOutputStream; import java.io.ioException; import java.io.inputStream; import java.io.outputStream; import java.io.unsupportedenCodingException; import java.net.httpurlconnection; import java.net.malformedurlexception; import java.net.net.net.netpurlconnection; import java.net.malformedurlexception; import java.net.net.net.htpurlconnection; import java.net.malformedurlexception; import java.net.net. java.net.urlencoder; import java.util.linkedhashmap; import java.util.map; public class Inter {private static final String BaseRerefer = "http://rs.xidian.edu.cn/forum.php?mod=viewthreadth&tid="; Cadena final estática privada YourCookie = "Q8QA_2132_SALTKEY = G1NJJJ3O; Q8QA_2132_LASTVISIT = 1438243699; Q8QA_2132_LASTCHECKFEED = 256730%7C1438252008; Q8QA_2132_AUTH = E11AEHHXPLGTYPFDK72YJZEGJHL1V70CUXXDTJ71VBU2DYUH%2BQHW3PGOJHSFXFJBVGNSVYFG1V%2BQLD0LT8KG6J%2B40W0; Q8QA_2132_ST_T = 256730%7C1438571068%7C51F8A322985E44F65FF1143329E6779A; Q8QA_2132_MYREPEAT_RR = R0; TJPCTRL = 1438781938176; Q8QA_2132_ST_P = 256730%7C1438781224%7C7A73EF608DC3CAF733308D63639B3BD0; Q8QA_2132_SID = Znfqqn; public static void main (string [] args) {int startID = 774210; // Necesita el cambio para (int i = 0; i <100; i ++) {postmessage (startID); startID ++; }} public static static boolean isExist (int id) {string tmppath = BaseRefer + id; URL URL; intente {url = new url (tmppath); Httpurlconnection con = (httpurlconnection) url.openconnection (); con.AddRequestProperty ("Content-type", "Text/html; charset = utf-8"); Con.AddRequestProperty ("User-agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebkit/537.36 (khtml, como gecko) Chrome/38.0.2125.104 Safari/537.36"); Con.addrequestProperty ("Referente", "http://t.dianping.com/register"); con.setRequestMethod ("Get"); if (con.getResponseCode () == 200) {inputStream inputStr = con.getInputStream (); String info = new String (streamtool.read (inputStr), "UTF-8"); if (info.contains ("Lo siento, el tema especificado no existe o se ha eliminado o se está revisando")) {System.out.println ("id =" + id + "¡La publicación existe o ha sido eliminada!"); devolver falso; }}} Catch (MalFormedUrLeCeption e) {// TODO BLOQUE DE CABTA GENERADA AUTO } Catch (ioException e) {// tODO Auto Generated BLOCK E.PrintStackTRace (); } Catch (Exception e) {// TODO Auto Generado Bloque E.PrintStackTrace (); } return verdadero; } public static void postmessage (int id) {if (! isExist (id)) {return; } String tmppath = Baserefer + id; StringBuilder Path = new StringBuilder (tmppath); Map <string, string> mapData = new LinkedHashMap <String, String> (); mapData.put ("mod", "post"); mapData.put ("Acción", "Respuesta"); mapData.put ("ResponderSubmit", "Sí"); mapdata.put ("infloat", "sí"); mapData.put ("HandleKey", "FastPost"); mapData.put ("Inajax", "1"); mapData.put ("Mensaje", "Apoyo a la amistad"); mapData.put ("Formhash", "86EC5D81"); Pruebe {for (map.entry <string, string> mapent: mapdata.entryset ()) {path.append ("&"); path.append (mapent.getkey () + "="); Path.Append (urlencoder.encode (mapent.getValue (), "utf-8")); } Url url = new URL (Path.ToString ()); Httpurlconnection con = (httpurlconnection) url.openconnection (); con.setRequestMethod ("post"); con.setRequestProperty ("Content-type", "Application/X-WWW-form-URLEncoded"); con.setRequestProperty ("Content-longitud", String.ValueOf (Path.Length ())); Con.setRequestProperty ("User-agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebkit/537.36 (khtml, como gecko) Chrome/38.0.2125.104 Safari/537.36"); Con.setRequestProperty ("Cookie", YourCookie); con.setDoOutput (verdadero); OutputStream Outstr = con.getOutputStream (); Outstr.Write (Path.ToString (). GetBytes ()); if (con.getResponseCode () == 200) {inputStream inputStr = con.getInputStream (); String info = new String (streamtool.read (inputStr), "UTF-8"); System.out.println ("en id =" + id + "publicado con éxito!"); intente {Thread.sleep (20 * 1000); } Catch (InterruptedException e) {// TODO Auto Generado Bloque E.PrintStackTrace (); }}} Catch (UnsupportedEncodingException e) {// TODO BLOCK GENERADO AUTO GENERADO E.PRINTSTACKTRACE (); } Catch (MalFormedUrexception e) {// TODO Auto Generado Bloque E.PrintStackTrace (); } Catch (ioException e) {// tODO Auto Generated BLOCK E.PrintStackTRace (); } Catch (Exception e) {// TODO Auto Generado Bloque E.PrintStackTrace (); }}} class StreamTool {public static byte [] read (inputStream InputStr) lanza la excepción {byteArRaReOutputStream Outstr = new ByteArRayOutputStream (); // TODO Método Generado automático byte [] buffer = new Byte [1024]; int len = 0; while ((len = inputStr.read (buffer))! = -1) {Outstr.Write (buffer, 0, len); } inputstr.close (); return outstr.tobytearray (); }}Diagrama de reproducción
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y habilite la respuesta automática a las publicaciones.