Este artigo estuda principalmente o problema do tempo de conexão de rastreamento da rede Java, como segue.
Nos rastreadores de rede, os seguintes erros são frequentemente encontrados. Isto é, a conexão cronometrada. Para esse problema, a solução geral é: Defina o tempo de conexão e solicite tempo por um longo período de tempo. Se o tempo limite da conexão ocorrer, re-solicitar [Defina o número de re-solicitações].
Exceção no thread "Main" java.net.ConnectException: Conexão cronometrada: Connect
O código a seguir é um programa de amostra que usa o HTTPClient para resolver o tempo limite da conexão. Vá diretamente para o programa.
pacote daili; importar java.io.ioException; importar java.net.uri; importar org.apache.http.httprequest; importar org.apache.http.httpropSe; importação; importacthe; org.apache.http.client.params.cookiepolicy; importar org.apache.http.client.protocol.clientContext; importar org.apache.http.implient.basiccookiestore; importância. 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.protocol.basichttpContext; importar org.apache.http.protocol.executionContext; importar org.apache.http.protocol.httpContext; importância. Tecnologia**[email protected]*/public Classe test1 {public static void main (string [] args) lança clientprotocolexception, ioexception, interruptedException {getrawhtml ("http://club.autohome.com.cn/bbs/forum-c-2098-1.html#pvareaid=103447");} public static string getrawhtml (string url) lança client-otocexception, uExexception) (string ured) httpClient = new DefaultTttpClient (); httpclient.getParams (). SetParameter ("http.protocol.cookie-policy", cookiepolicy.browser_compatibility); // parâmetros HTTPPARAMSS = httplient_Compatibility); HttpConnectionParams.setConnectionTimeout(params, 6000);HttpConnectionParams.setSoTimeout(params, 6000*20);//Timeout re-requests DefaultHttpRequestRetryHandler dhr = new DefaultHttpRequestRetryHandler(5,true);HttpContext localContext = new BasichttpContext (); httPrequest request2 = (httprequest) localContext.getAttribute (ExecutionContext.http_request); httpclient.SethttPrequestRetryHandler (DHR); Basiccookestore bookestore = New BasicestokiKestOkestokiKestOkestokestokiKestokestrokestokestrokestokestrokiKestokiKestokiKestrokestrokestrokiKestokiKestrokestrokiKestrokiKestrokiKestrokiKestrokiKestrokiKestrokiKestrokiKestrokiKestrokiKestReTRetRyHandler (DHR); BASICCLIENTCOOKIE2 ("Tipo de conteúdo", "Texto/html; charset = utf-8"); BasicClientCookie2 Cookie1 = new BasicClientCookie2 ("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Wow64) Applewebkit/537.36 (Khtm (KHTM 10; Safari/537.36 "); cookiestore.addcookie (cookie); cookiestore.addcookie (cookie1); localContext.SetAttribute (clientContext.cookie_store, cookiestore); httpget request = new httpget (); solicitação; rawhtml = ""; resposta = httpclient.execute (request, localContext); int statusCode = Response.getStatusline (). getStatuscode (); // Obtenha o código de status de resposta System.out.println (statusCode); if (statusCode == 200) {// StatusCode 200 indica que a resposta é bem -sucedida // obtenha o conteúdo da entidade RAWHTML = entityutils.toString (Response.getEntity ()); System.out.println (rawhtml); // emitir a entidade entidade de conteúdo de entidade.consume (Response.getEntity ()); // entidade consumindo} else {// fecha a entidade de streaming de httpentityEntityUtils.consume (resposta. Quebra de 30 minutos} httpclient.close (); system.out.println (rawhtml); retorna rawhtml;}}
resultado:
Resumir
O exposto acima é todo o conteúdo deste artigo sobre o código da solução de tempo limite da Java Web Crawler, espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!