Cet article étudie principalement le problème du délai d'expiration de la connexion par rapport du réseau Java, comme suit.
Dans les robots de réseau, les erreurs suivantes sont souvent rencontrées. Autrement dit, la connexion a expiré. Pour ce problème, la solution générale est: définir le temps de connexion et le temps de demande pour une période plus longue. Si le délai d'expiration de connexion se produit, Requequest [Définissez le nombre de reprises].
Exception dans Thread "Main" java.net.connectException: Connexion expirée: Connexion
Le code suivant est un exemple de programme qui utilise HttpClient pour résoudre le délai d'attente de connexion. Accédez directement au programme.
Package Daili; Importer java.io.ioException; import java.net.uri; import org.apache.http.httprequest; import org.apache.http.httpresponse; import org.apache.http.client.ClientProtocoLexception; import org.apache.http.client.Methods.htt; org.apache.http.client.params.cookiepolicy; import org.apache.http.client.protocol.clientContext; import org.apache.http.impl.client.basiccookiestore; import org.apache.http.impl.client.defaulthttpclient; import org.apache.http.impl.client.defaulthttpclient2; import org.apache.http.params.httpconnectionparams; import org.apache.http.params.httpparams; import org.apache.http.params.httpparams; org.apache.http.protocol.basichttpcontext; import org.apache.http.protocol.executionctext; import org.apache.http.protocol.httpcontex Technologie*[email protected]*/Public Class Test1 {public static void Main (String [] args) lève ClientProtocolexception, ioexception, InterruptedException {getrawhtml ("http://club.autohome.com.cn/bbs/forum-c-2098-1.html#pvareaid=103447");} String statique public getrawhtml (String URL) lance ClientProtocoLexception, ioexception, interruptedException {// initial defaulthTTPCLOL httpclient = new defaulthTTPClient (); httpclient.getParams (). SetParameter ("http.protocol.cookie-Policy" HttpConnectionParams.SetConnectionTimeout (Params, 6000); httpconnectionParams.SetSoTimeout (Params, 6000 * 20); // Timeout Requequests DefaulthTTPrequestretryHandler Dhr = new DefaulthTTPRequestreryHandler (5, True); httpcontext BasichttpContext (); httpRequest request2 = (httprequest) localContext.getAttribute (ExecutionContex BasicClientCooKie2 ("Content-Type", "Text / HTML; charSet = UTF-8"); BasicClientcookie2 Cookie1 = new BasicClientCooKie2 ("User-Agent", "Mozilla / 5.0 (Windows NT 10.0; wow64) Applewebkit / 537.36 (khtml, comme gecko) Chromo Safari / 537.36 "); CookesTore.Addcookie (Cookie); Cookiestore.Addcookie (Cookie1); LocalContext.SetAttribute (clientContext.cookie_store, Cookiestore); Httpget request = new Httpget (); request.seturi (uri.create (url)); httprarsonSponse = null; = ""; Response = httpClient.Execute (request, localContext); int statuscode = réponse.getStatusline (). getStaturcode (); // Obtenez le code de réponse System.out.out.println (statuscode); if (statuscode == 200) {// statuscode 200 indique que la réponse est réussie // obtient le contenu de l'entité RAWHTML = EntityUtils.ToString (Response.getEntity ()); System.out.println (RAWHTML); // Sortie de l'entité Contenu EntityUtils.consume (Response.GetEntity ()); // Consomring Entity} else {// Fermez l'entité de streaming de httpentityEntityUtils.consume (Response.getEntity ()); // Consume le thread entité. Pause de 30 minutes} httpclient.close (); System.out.println (rawHtml); return RawHtml;}}
résultat:
Résumer
Ce qui précède est tout le contenu de cet article sur le code de solution de délai d'expiration de la connexion du robot de robot Java, j'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!