процедуры ввода Рептилии и использование HttpClient

Получение Корпус:

  1. Создайте Maven проект, внедрение зависимости:

< Зависимостей > 
    <! - HttpClient -> 
    < зависимость > 
        < идентификатор_группы > org.apache.httpcomponents </ идентификатор_группы > 
        < артефакт > HttpClient </ артефакт > 
        < версия > 4.5.3 </ версия > 
    </ зависимость > 
    <! - 日志-> 
    < зависимость > 
        < идентификатор_группы > org.slf4j </ идентификатор_группы > 
        <артефакта> SLF4J-log4j12 </ артефакт > 
        < версия > 1.7.25 </ версии > 
    </ зависимость > 
    <! - JUnit -> 
    < зависимость > 
        < идентификатор_группы > JUnit </ идентификатор_группы > 
        < артефакт > JUnit </ артефакт > 
        < версия > 4,12 </ версия > 
    </ зависимость > 
</ зависимости >

  2. Добавить 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 =% - д {YYYY-MM-дд чч: мм: сс, SSS} [% т] [% с] - [% р]% м% п

  3. Введите тест кода, сбор данных

@Test
 общественного  недействительными testFirst () бросает IOException { 
    CloseableHttpClient клиент = HttpClients.createDefault (); 
    HttpGet HttpGet = новый HttpGet ( "https://www.cnblogs.com/roadlandscape/" ); 
    CloseableHttpResponse ответ = client.execute (HttpGet);
    если (response.getStatusLine () getStatusCode () == 200. ) { 
        Строка контекста = EntityUtils.toString (response.getEntity (), "UTF-8" ); 
        System.out.println (контекст); 
    } 
}

GET запрос с параметрами:

@Test
 общественного  недействительный testGetParam () { 
    CloseableHttpClient клиент = HttpClients.createDefault ();
    // HttpGet HttpGet = новый HttpGet ( " https://s.taobao.com/search?q=vivo "); 
    CloseableHttpResponse ответ = NULL ;
    попробуйте { 
        URIBuilder строитель = новый URIBuilder ( "https://s.taobao.com/search" ); 
        builder.addParameter ( "д", "естественный" ); 
        HttpGet HttpGet = новый HttpGet (builder.build ()); 
        ответ = client.execute (HttpGet);
        если (response.getStatusLine () getStatusCode () == 200. ) { 
            Строка контекста = EntityUtils.toString (response.getEntity (), "UTF-8" ); 
            System.out.println (контекст); 
        } 
    } Улов (Исключение е) { 
        e.printStackTrace (); 
    } Наконец {
         если (ответ! = NULL ) {
             попытка { 
                response.close (); 
            } Поймать (IOException е) { 
                e.printStackTrace (); 
            } 
        } 
        Попробовать {
            client.close (); 
        } Поймать (IOException е) { 
            e.printStackTrace (); 
        } 
    } 
}

запрос POST:

@Test
 общественного  недействительный testPost () { 
    CloseableHttpClient клиент = HttpClients.createDefault (); 
    HttpPost HttpPost = новый HttpPost ( "https://www.cnblogs.com/roadlandscape/" ); 
    CloseableHttpResponse ответ = NULL ;
    попытаться { 
        ответ = client.execute (HttpPost);
        если (response.getStatusLine () getStatusCode () == 200. ) { 
            Строка контекста = EntityUtils.toString (response.getEntity (), "UTF-8" ); 
            System.out.println (контекст); 
        }
    } Поймать(IOException е) { 
        e.printStackTrace (); 
    } Наконец {
         если (ответ! = NULL ) {
             попытка { 
                response.close (); 
            } Поймать (IOException е) { 
                e.printStackTrace (); 
            } 
        } 
        Попытаться { 
            client.close (); 
        } Поймать (IOException е) { 
            e.printStackTrace (); 
        } 
    } 
}

запрос POST с параметрами:

@Test
 общественного  недействительный testPostParam () { 
    CloseableHttpClient клиент = HttpClients.createDefault (); 
    CloseableHttpResponse ответ = NULL ;
    попробуйте { 
        HttpPost HttpPost = новый HttpPost ( "https://s.taobao.com/search" );
        // 创建存放参数的список 
        List <пар имя> PARAMS = новый ArrayList <> (); 
        params.add ( новый BasicNameValuePair ( "д", "естественный" ));
        // 创建表单数据Entity 
        UrlEncodedFormEntity объект = новыйUrlEncodedFormEntity (PARAMS, "UTF-8" );
        // 设置表单Entity到HttpPost中
        httpPost.setEntity (юридическое лицо); 
        ответ = client.execute (HttpPost);
        если (response.getStatusLine () getStatusCode () == 200. ) { 
            Строка контекста = EntityUtils.toString (response.getEntity (), "UTF-8" ); 
            System.out.println (контекст); 
        } 
    } Улов (Исключение е) { 
        e.printStackTrace (); 
    } Наконец {
         если (ответ! = NULL ) {
             попытка {
                response.close (); 
            } Поймать (IOException е) { 
                e.printStackTrace (); 
            } 
        } 
        Попытаться { 
            client.close (); 
        } Поймать (IOException е) { 
            e.printStackTrace (); 
        } 
    } 
}

Пулы соединений:

  Если каждый запрос должен создать HttpClient, будут проблемы часто создавать и разрушать, вы можете использовать пул соединений, чтобы решить эту проблему.

общественный  класс ConPool {
     общественных  статический  недействительный основной (String [] арг) бросает IOException { 
        PoolingHttpClientConnectionManager см & лто = новый новый PoolingHttpClientConnectionManager ();
         // установить максимальное количество соединений 
        cm.setMaxTotal (200 );
         // Установить количество одновременного каждый хоста 
        cm.setDefaultMaxPerRoute (20 ); 

        doGet (см & л); 
    } 

    частного  статического  аннулированию на doGet (см & л PoolingHttpClientConnectionManager) броски IOException { 
        CloseableHttpClient Client =. HttpClients.custom () setConnectionManager (см & л) .build (); 
        HttpGet HttpGet = новый новый HttpGet ( "https://www.cnblogs.com/roadlandscape/" ); 

        // установить параметр запроса 
        RequestConfig requestConfig = RequestConfig.custom () 
                .setConnectTimeout ( 1000) // установить время максимум для создания соединений 
                .setConnectionRequestTimeout (500) // установить извлеченный максимальное время подключен 
                .setSocketTimeout (10 * 1000) // максимальное время проектирования передаваемых данных 
                .build (); 
        HttpGet .setConfig (requestConfig); 

        CloseableHttpResponse ответ = client.execute (HttpGet);
        если (response.getStatusLine () getStatusCode () == 200. ) { 
            Строка контекста = EntityUtils.toString (response.getEntity (), "UTF-8" ); 
            System.out.println (контекст); 
        } 
    } 
}

 

1.1.1. Написать код

 

рекомендация

отwww.cnblogs.com/roadlandscape/p/12555973.html