Cet article partage Java simule HTTP Get Demandes et la fonction de réponse automatique du campus BBS pour votre référence. Le contenu spécifique est le suivant
Idées de conception
Trouvez la collection de liens de publication et modifiez le numéro à la fin, et vous pouvez obtenir différents messages
Empêcher les postes d'être supprimés à nouveau et déterminer si le poste existe
Itérer dans cette collection et faire une demande de poste pour répondre à chaque lien
Points clés
Note:
Code
Le code est relativement simple. La précaution est de trouver votre propre cookie. Attribuez votrecookie pour lancer votrecookie et exécutez-la directement.
L'essentiel est de déterminer si le poste existe ou non. Ceci est une demande de GET, puis envoyez une réponse avec la publication. Le message de réponse est codé en dur comme "Friendly aid" dans mapdata.put ("message", "sympathique aidé"), vous pouvez le modifier
import java.io.bytearrayoutputStream; import java.io.ioexception; import java.io.inputStream; import java.io.outputStream; import java.io.unsuppordencodingException; import java.net.httpurlconnection; import java.net.malpemedurlexception; java.net.urlencoder; import java.util.linkedhashmap; import java.util.map; public class inter {private static final string baserefer = "http://rs.xidian.edu.cn/forum.php?mod=Viewthread&tid="; chaîne finale statique privée yourcookie = "q8qa_2132_saltkey = g1njj3o; 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; // Vous avez besoin de modification pour (int i = 0; i <100; i ++) {postMessage (startId); startId ++; }} public static boolean isExist (int id) {String tmpppath = baserefer + id; URL URL; try {url = new URL (tMPPath); HttpurlConnection con = (httpurlconnection) url.openconnection (); con.addrequestProperty ("contenu-type", "text / html; charset = utf-8"); CON.AdDrequestProperty ("User-Agent", "Mozilla / 5.0 (Windows NT 6.1) Applewebkit / 537.36 (KHTML, comme Gecko) Chrome / 38.0.2125.104 Safari / 537.36"); con.addrequestproperty ("référente", "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 ("Désolé, le sujet spécifié n'existe pas ou a été supprimé ou est en cours d'examen")) {System.out.println ("id =" + id + "Le message existe ou a été supprimé!"); retourne false; }}} catch (MalformEdUrlexception e) {// TODO Block de catch généré automatiquement e.printStackTrace (); } catch (ioException e) {// TODO Bloc de capture généré automatiquement e.printStackTrace (); } catch (exception e) {// TODO Bloc de capture généré automatiquement e.printStackTrace (); } return true; } public static void postMessage (int id) {if (! isExist (id)) {return; } String tMppath = Baserefer + ID; StringBuilder path = new StringBuilder (tmpppath); Map <string, string> mapData = new LinkedHashMap <String, String> (); mapdata.put ("mod", "post"); mapdata.put ("action", "réponse"); mapdata.put ("RépondreSubmit", "Oui"); MapData.put ("Infloat", "Oui"); mapdata.put ("handlekey", "fastpost"); mapdata.put ("inajax", "1"); MapData.put ("Message", "Support d'amitié"); mapdata.put ("formhash", "86ec5d81"); try {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 ("contenu-type", "application / x-www-form-urlencoded"); con.setRequestProperty ("Content-Length", String.ValueOf (path.length ())); Con.SetRequestProperty ("User-Agent", "Mozilla / 5.0 (Windows NT 6.1) Applewebkit / 537.36 (KHTML, comme Gecko) Chrome / 38.0.2125.104 Safari / 537.36"); con.setRequestProperty ("cookie", yourcookie); con.setDoOutput (true); 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 ("dans id =" + id + "Publié avec succès!"); essayez {thread.sleep (20 * 1000); } Catch (InterruptedException e) {// TODO Block de catch généré automatiquement e.printStackTrace (); }}} Catch (UnpportDenCcodingException e) {// TODO Block de catch généré automatiquement e.printStackTrace (); } catch (MalformEdUrException e) {// TODO Générations de catch Généra E.PrintStackTrace (); } catch (ioException e) {// TODO Bloc de capture généré automatiquement e.printStackTrace (); } catch (exception e) {// TODO Bloc de capture généré automatiquement e.printStackTrace (); }}} class streamTool {public static byte [] read (inputStream inputStr) lève exception {bytearrayoutputStream outstr = new byTearRayOutputStream (); // TODO Méthode générée automatique BYTE BYTE [] BUFFER = NOUVEAU BYTE [1024]; int len = 0; while ((len = inputstr.read (tampon))! = -1) {outstr.write (tampon, 0, len); } inputstr.close (); return outstr.toByTearray (); }}Diagramme de reproduction
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et permettra une réponse automatique aux messages.