les procédures d'entrée de reptiles et l'utilisation de HttpClient

Obtenir cas:

  1. Créez un projet Maven, l'introduction de la dépendance:

< Dépendances > 
    <! - HttpClient -> 
    < dépendance > 
        < groupId > org.apache.httpcomponents </ groupId > 
        < artifactId > httpclient </ artifactId > 
        < Version > 4.5.3 </ Version > 
    </ dépendance > 
    <! - 日志-> 
    < dépendance > 
        < groupId > org.slf4j </ groupId > 
        <artifactId> Slf4j-log4j12 </ artifactId > 
        < Version > 1.7.25 </ Version > 
    </ dépendance > 
    <! - JUnit -> 
    < dépendance > 
        < groupId > JUnit </ groupId > 
        < artifactId > JUnit </ artifactId > 
        < Version > 4,12 </ Version > 
    </ dépendance > 
</ dépendances >

  2. Ajouter log4j.properties

log4j.rootLogger = DEBUG, A1 
log4j.logger.com.fgy = debug 

log4j.appender.A1 = org.apache.log4j.ConsoleAppender 
log4j.appender.A1.layout = org.apache.log4j.PatternLayout 
log4j.appender.A1. layout.ConversionPattern =% - d {aaaa-mm-jj hh: mm: ss, SSS} [t%] [% c] - [% p]% m% n

  3. Ecrire le code de test, la capture de données

@Test
 publique  vide testFirst () lance IOException { 
    CloseableHttpClient client = HttpClients.createDefault (); 
    HttpGet HttpGet = nouvelle HttpGet ( "https://www.cnblogs.com/roadlandscape/" ); 
    Réponse CloseableHttpResponse = client.execute (HttpGet);
    si (response.getStatusLine () getStatusCode () == 200. ) { 
        Chaîne de contexte = EntityUtils.toString (response.getEntity (), "utf-8" ); 
        System.out.println (contexte); 
    } 
}

GET demande avec des paramètres:

@Test
 publique  vide testGetParam () { 
    CloseableHttpClient client = HttpClients.createDefault ();
    // HttpGet HttpGet = new HttpGet ( " https://s.taobao.com/search?q=vivo "); 
    Réponse CloseableHttpResponse = null ;
    essayez { 
        UriBuilder constructeur = nouveau UriBuilder ( "https://s.taobao.com/search" ); 
        builder.addParameter ( "q", "in vivo" ); 
        HttpGet HttpGet = nouveau HttpGet (builder.build ()); 
        réponse = client.execute (HttpGet);
        si (response.getStatusLine () getStatusCode () == 200. ) { 
            Chaîne de contexte = EntityUtils.toString (response.getEntity (), "utf-8" ); 
            System.out.println (contexte); 
        } 
    } Captures (Exception e) { 
        e.printStackTrace (); 
    } Enfin {
         si (réponse =! Null ) {
             try { 
                response.close (); 
            } Captures (IOException e) { 
                e.printStackTrace (); 
            } 
        } 
        Essayer {
            client.close (); 
        } Captures (IOException e) { 
            e.printStackTrace (); 
        } 
    } 
}

requête POST:

@Test
 publique  vide testPost () { 
    CloseableHttpClient client = HttpClients.createDefault (); 
    HttpPost HttpPost = nouvelle HttpPost ( "https://www.cnblogs.com/roadlandscape/" ); 
    Réponse CloseableHttpResponse = null ;
    essayez { 
        réponse = client.execute (HttpPost);
        si (response.getStatusLine () getStatusCode () == 200. ) { 
            Chaîne de contexte = EntityUtils.toString (response.getEntity (), "utf-8" ); 
            System.out.println (contexte); 
        }
    } Captures (IOException e) { 
        e.printStackTrace (); 
    } Enfin {
         si (réponse =! Null ) {
             try { 
                response.close (); 
            } Captures (IOException e) { 
                e.printStackTrace (); 
            } 
        } 
        Essayer { 
            client.close (); 
        } Captures (IOException e) { 
            e.printStackTrace (); 
        } 
    } 
}

requête POST avec des paramètres:

@Test
 publique  vide testPostParam () { 
    CloseableHttpClient client = HttpClients.createDefault (); 
    Réponse CloseableHttpResponse = null ;
    essayez { 
        HttpPost HttpPost = nouveau HttpPost ( "https://s.taobao.com/search" );
        // 创建存放参数的liste 
        Liste <NameValuePair> params = nouveau ArrayList <> (); 
        params.add ( nouveau BasicNameValuePair ( "q", "in vivo" ));
        // 创建表单数据Entité 
        entité UrlEncodedFormEntity = nouvelleUrlEncodedFormEntity (params, "utf-8" );
        // 设置表单Entité到HttpPost中
        httpPost.setEntity (entité); 
        réponse = client.execute (HttpPost);
        si (response.getStatusLine () getStatusCode () == 200. ) { 
            Chaîne de contexte = EntityUtils.toString (response.getEntity (), "utf-8" ); 
            System.out.println (contexte); 
        } 
    } Captures (Exception e) { 
        e.printStackTrace (); 
    } Enfin {
         si (réponse! = Null ) {
             try {
                response.close (); 
            } Captures (IOException e) { 
                e.printStackTrace (); 
            } 
        } 
        Essayer { 
            client.close (); 
        } Captures (IOException e) { 
            e.printStackTrace (); 
        } 
    } 
}

Mise en commun de connexion:

  Si chaque demande doit créer HttpClient, il y aura des problèmes créent fréquemment et détruire, vous pouvez utiliser la mise en commun de connexion pour résoudre ce problème.

publique  classe ConPool {
     publics  statiques  vides principaux (String [] args) jette IOException { 
        PoolingHttpClientConnectionManager cm & lt = new new PoolingHttpClientConnectionManager ();
         // définir le nombre maximum de connexions 
        cm.setMaxTotal (200 est );
         // Définissez le nombre de chaque hôte concurrent 
        cm.setDefaultMaxPerRoute (20 est ), 

        le doGet (cm & lt); 
    } 

    privée  statique  non avenue la doGet (cm & lt PoolingHttpClientConnectionManager) lancers francs IOException { 
        CloseableHttpClient client =. HttpClients.custom () setConnectionManager (cm & lt) .build (); 
        HttpGet HttpGet = new new HttpGet ( "https://www.cnblogs.com/roadlandscape/" ); 

        // paramètre la demande 
        RequestConfig requestConfig = RequestConfig.custom () 
                .setConnectTimeout ( 1000) // régler le temps maximum pour créer des connexions 
                .setConnectionRequestTimeout (500) // régler le temps maximal recherché connecté 
                .setSocketTimeout (10 * 1000) // temps maximum de données de conception transmis 
                de .build (); 
        HttpGet .setConfig (requestConfig); 

        CloseableHttpResponse Response = client.execute (HttpGet);
        si (response.getStatusLine () getStatusCode () == 200. ) { 
            Chaîne de contexte = EntityUtils.toString (response.getEntity (), "utf-8" ); 
            System.out.println (contexte); 
        } 
    } 
}

 

1.1.1. Écrire du code

 

Je suppose que tu aimes

Origine www.cnblogs.com/roadlandscape/p/12555973.html
conseillé
Classement