package com.wangxuegang.pachong; import java.io.IOException; import java.net.SocketTimeoutException; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.HttpGet; import org.apache.http.conn.ConnectTimeoutException; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import org.apache.log4j.Logger; import org.junit.Test; /** * * @类描述:httpclient 4.3以上版本 * @项目名称:com.wangxuegang.pachong * @包名: com.wangxuegang.pachong * @类名称:Pachong20181220 * @创建人:wangxuegang * @创建时间:2018年12月21日上午9:49:30 * @mail 15510235102@163.com * @version v1.0 */ public class Pachong20181220 { private static Logger log = Logger.getLogger(Pachong20181220.class); private static int CONNECT_TIME_OUT = 1000; private static int SOCKET_TIME_OUT = 2000; private static int CONNECTION_REQUEST_TIME_OUT = 2000; @Test public void test01(){ try { /** 创建 httpClient 实例 */ HttpClient httpClient = HttpClients.createDefault(); /** 创建 get()方法 */ HttpGet httpGet = new HttpGet("https://www.zhihu.com"); /** 超时设置 */ RequestConfig requestConfig = RequestConfig.custom() /** 设置连接超时时间,单位毫秒 */ .setConnectTimeout(CONNECT_TIME_OUT) /** 请求获取数据的超时时间(即响应时间),单位毫秒。 如果访问一个接口,多少时间内无法返回数据,就直接放弃此次调用 */ .setSocketTimeout(SOCKET_TIME_OUT) /** 设置从connect Manager(连接池)获取Connection 超时时间,单位毫秒,这个属性是新加的属性,因为目前版本是可以共享连接池的 */ .setConnectionRequestTimeout(CONNECTION_REQUEST_TIME_OUT) .build(); httpGet.setConfig(requestConfig); /** get请求,返回响应 */ HttpResponse httpResponse = httpClient.execute(httpGet); HttpEntity entity = httpResponse.getEntity(); /** 状态 */ int state = httpResponse.getStatusLine().getStatusCode(); /** 打印 */ System.out.println("响应状态:"+state+"\n内容:"+EntityUtils.toString(entity,"UTF-8")); } catch (ClientProtocolException e) { log.error(e.getStackTrace()); } catch (ConnectTimeoutException e) { log.error("温馨提示:连接超时"); } catch (SocketTimeoutException e) { log.error("温馨提示:响应超时"); } catch (IOException e) { log.error(e.getStackTrace()); } } @Test public void test02(){ try { /** 超时设置 */ RequestConfig requestConfig = RequestConfig.custom() /** 设置连接超时时间,单位毫秒 */ .setConnectTimeout(CONNECT_TIME_OUT) /** 请求获取数据的超时时间(即响应时间),单位毫秒。 如果访问一个接口,多少时间内无法返回数据,就直接放弃此次调用 */ .setSocketTimeout(SOCKET_TIME_OUT) /** 设置从connect Manager(连接池)获取Connection 超时时间,单位毫秒,这个属性是新加的属性,因为目前版本是可以共享连接池的 */ .setConnectionRequestTimeout(CONNECTION_REQUEST_TIME_OUT) .build(); /** 创建 httpClient 实例 */ HttpClientBuilder httpClientBuilder = HttpClientBuilder.create(); /** 连接池个数 */ httpClientBuilder.setMaxConnTotal(30); /** 路由并发数 */ httpClientBuilder.setMaxConnPerRoute(2); /** 使用配置的连接池和路由 */ httpClientBuilder.setDefaultRequestConfig(requestConfig); /** 构建httpclient对象*/ HttpClient httpClient = httpClientBuilder.build(); /** 创建 get()方法 */ HttpGet httpGet = new HttpGet("https://www.zhihu.com"); /** get请求,返回响应 */ HttpResponse httpResponse = httpClient.execute(httpGet); HttpEntity entity = httpResponse.getEntity(); /** 状态 */ int state = httpResponse.getStatusLine().getStatusCode(); /** 打印 */ System.out.println(""响应状态:"+state+"\n内容:"+EntityUtils.toString(entity,"UTF-8")); } catch (ClientProtocolException e) { log.error(e.getStackTrace()); } catch (ConnectTimeoutException e) { log.error("温馨提示:连接超时"); } catch (SocketTimeoutException e) { log.error("温馨提示:响应超时"); } catch (IOException e) { log.error(e.getStackTrace()); } } }
### 设置日志打印优先级 OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL### log4j.rootLogger = debug,console,debug,error,all ### 输出信息到控制抬 ### log4j.appender.console = org.apache.log4j.ConsoleAppender log4j.appender.console.Target = System.out log4j.appender.console.layout = org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n ### 输出INFO 级别以上的日志到=C://logs/info.log ### log4j.appender.debug = org.apache.log4j.DailyRollingFileAppender log4j.appender.debug.File = C://logs/info.log log4j.appender.debug.Append = true log4j.appender.debug.Threshold = INFO log4j.appender.debug.layout = org.apache.log4j.PatternLayout log4j.appender.debug.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n ### 输出ERROR 级别以上的日志到=C://logs/error.log ### log4j.appender.error = org.apache.log4j.DailyRollingFileAppender log4j.appender.error.File =C://logs/error.log log4j.appender.error.Append = true log4j.appender.error.Threshold = ERROR log4j.appender.error.layout = org.apache.log4j.PatternLayout log4j.appender.error.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n ### 输出ALL 级别以上的日志到=C://logs/all.log ### log4j.appender.all = org.apache.log4j.DailyRollingFileAppender log4j.appender.all.File =C://logs/all.log log4j.appender.all.Append = true log4j.appender.all.Threshold = ALL log4j.appender.all.layout = org.apache.log4j.PatternLayout log4j.appender.all.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
相关推荐
在这个`httpclient4.3工具类`中,我们看到的是一个自定义的`httpclientUtils`,它是为了满足特定项目需求而编写的,集成了常见的HTTP操作。 HttpClient 4.3主要知识点包括: 1. **连接管理**:HttpClient 4.3引入...
HttpClient 4.3版本是对该库的一次重要更新,提供了更多的功能和优化。这个封裝工具类是对HttpClient 4.3进行的二次开发,旨在简化HTTP请求的处理,解决一些常见的问题,如代理设置、多线程并发请求、SSL安全连接...
HttpClient 4.3.x是该库的一个重要版本,它提供了丰富的功能和改进,使得开发者能够更方便地与Web服务器进行交互。在本文中,我们将深入探讨HttpClient 4.3.x的核心特性、依赖关系以及如何在实际项目中应用。 **...
这个"httpClient4.3官方包"包含了HttpClient 4.3.1版本的所有源代码和必要的文档文件,使得用户可以直接在自己的项目中使用或进行深入学习。 HttpClient 4.3版本引入了许多改进和新特性,如支持最新的HTTP/1.1和...
在这个"httpClient4.3 Jar包 demo"中,你将找到HttpClient 4.3的jar文件以及相关的示例代码,对于学习和理解HttpClient的使用非常有帮助。 HttpClient 4.3主要知识点包括: 1. **基础概念**: - **HttpClient对象...
了解以上知识点,开发者可以利用HttpClient 4.3高效地实现与Web服务器的交互,无论是简单的HTTP请求还是复杂的HTTP事务处理,HttpClient都能提供强大的支持。在实际项目中,正确理解和使用这些知识点对于提升应用的...
HttpClient 4.3 版本是该库的一个稳定版本,提供了许多改进和新特性,以增强性能和易用性。 HttpClient 4.3 的核心概念包括: 1. **HttpClient 实例**:这是执行 HTTP 请求的基础。开发者通常会创建一个 ...
标题 "HTTPClient 4.3.X" 涉及的是Apache...以上就是围绕HTTPClient 4.3.X的知识点介绍,这些内容可以帮助开发者更有效地利用这个库进行HTTP通信。在实际开发中,理解并熟练运用这些知识点将大大提高代码的质量和效率。
### HttpClient 4.3 中文版相关知识点 #### 一、概述 Apache HttpClient 是一个用于构建 HTTP 客户端的应用程序编程接口 (API),属于 Apache Jakarta Commons 的一部分。该库支持 HTTP 协议的最新标准,并提供了...
其版本4.3是该库的一个重要迭代,提供了诸多改进和新特性,旨在提升性能、稳定性和易用性。本文将深入探讨HttpClient 4.3的核心功能、主要特性以及使用方法。 一、核心功能 1. HTTP协议支持:HttpClient 4.3全面...
HTTPClient是Java编程中用于处理HTTP协议的库,版本4.3是一个常用且稳定的版本。在进行网络爬虫开发时,HTTPClient库扮演了至关重要的角色,它提供了丰富的功能,如发起HTTP请求、处理响应、管理Cookie、实现重试...
HttpClient 4.3版本是一个重要的里程碑,它引入了许多新特性、优化和改进,旨在提高性能,增强稳定性和易用性。这个教程可能是针对开发者设计的,帮助他们深入理解和有效地使用HttpClient 4.3进行网络请求。 ...
本文将深入探讨HttpClient 4.3和HttpCore 4.4这两个版本的关键特性、改进及使用方法。 HttpClient 4.3是一个重大的更新,它引入了诸多增强功能和性能优化。首先,HttpClient 4.3支持了HTTP/1.1和HTTP/2协议,使...
标题中的“httpclient4.3登陆人人”指的是使用Apache HttpClient 4.3版本实现对人人网的自动登录功能。HttpClient是一个流行的开源Java库,它允许开发者执行HTTP请求并处理响应,广泛应用于网络爬虫、自动化测试和...
HttpClient 4.3是其一个重要的版本,提供了许多新特性和改进,以提升性能和易用性。这个压缩包包含两份文档,一份是.docx格式,一份是.pdf格式,两者内容相同,都是关于HttpClient 4.3的中文版指南。 HttpClient的...
HttpClient 4.3 版本可能包括对 HTTP/1.1 协议的改进和优化,增强了错误处理和性能,同时也可能提供了更好的可扩展性和定制性。开发者可以根据自己的需求配置 HttpClient 实例,以适应不同的网络环境和应用需求。 ...
在HttpClient 4.3版本中,这个库进行了许多改进和优化,使其更适用于复杂的网络通信需求。本教程将详细介绍HttpClient 4.3的主要特性和使用方法。 一、HttpClient简介 HttpClient是一个Java库,它允许开发人员执行...
这个压缩包“httpclient4.3 封装工具类.zip”很可能包含了一些预先封装好的工具类,用于简化使用HttpClient进行网络请求的过程。以下是一些关于HttpClient 4.3以及如何封装工具类的关键知识点: 1. **HttpClient ...
javase http通讯技术 apache httpclient4.3 设置代理详解
在实际开发中,Apache HttpClient 4.3.x 版本被广泛应用于各种场景,如Web服务调用、数据抓取、文件上传下载等。它的灵活性和可配置性使其成为Java开发者的首选HTTP客户端库之一。通过这两个jar文件,开发者可以构建...