`

HttpClient 4.3以上版本

 
阅读更多
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工具类

    在这个`httpclient4.3工具类`中,我们看到的是一个自定义的`httpclientUtils`,它是为了满足特定项目需求而编写的,集成了常见的HTTP操作。 HttpClient 4.3主要知识点包括: 1. **连接管理**:HttpClient 4.3引入...

    httpclient4.3 封装工具类

    HttpClient 4.3版本是对该库的一次重要更新,提供了更多的功能和优化。这个封裝工具类是对HttpClient 4.3进行的二次开发,旨在简化HTTP请求的处理,解决一些常见的问题,如代理设置、多线程并发请求、SSL安全连接...

    httpclient4.3.x及其依赖jar包

    HttpClient 4.3.x是该库的一个重要版本,它提供了丰富的功能和改进,使得开发者能够更方便地与Web服务器进行交互。在本文中,我们将深入探讨HttpClient 4.3.x的核心特性、依赖关系以及如何在实际项目中应用。 **...

    httpClient4.3官方包

    这个"httpClient4.3官方包"包含了HttpClient 4.3.1版本的所有源代码和必要的文档文件,使得用户可以直接在自己的项目中使用或进行深入学习。 HttpClient 4.3版本引入了许多改进和新特性,如支持最新的HTTP/1.1和...

    httpClient4.3 Jar包 demo

    在这个"httpClient4.3 Jar包 demo"中,你将找到HttpClient 4.3的jar文件以及相关的示例代码,对于学习和理解HttpClient的使用非常有帮助。 HttpClient 4.3主要知识点包括: 1. **基础概念**: - **HttpClient对象...

    HttpClient4.3需要的jar

    了解以上知识点,开发者可以利用HttpClient 4.3高效地实现与Web服务器的交互,无论是简单的HTTP请求还是复杂的HTTP事务处理,HttpClient都能提供强大的支持。在实际项目中,正确理解和使用这些知识点对于提升应用的...

    httpClient4.3

    HttpClient 4.3 版本是该库的一个稳定版本,提供了许多改进和新特性,以增强性能和易用性。 HttpClient 4.3 的核心概念包括: 1. **HttpClient 实例**:这是执行 HTTP 请求的基础。开发者通常会创建一个 ...

    HTTPClient 4.3.X

    标题 "HTTPClient 4.3.X" 涉及的是Apache...以上就是围绕HTTPClient 4.3.X的知识点介绍,这些内容可以帮助开发者更有效地利用这个库进行HTTP通信。在实际开发中,理解并熟练运用这些知识点将大大提高代码的质量和效率。

    httpclient 4.3 中文版

    ### HttpClient 4.3 中文版相关知识点 #### 一、概述 Apache HttpClient 是一个用于构建 HTTP 客户端的应用程序编程接口 (API),属于 Apache Jakarta Commons 的一部分。该库支持 HTTP 协议的最新标准,并提供了...

    httpclient-4.3.jar

    其版本4.3是该库的一个重要迭代,提供了诸多改进和新特性,旨在提升性能、稳定性和易用性。本文将深入探讨HttpClient 4.3的核心功能、主要特性以及使用方法。 一、核心功能 1. HTTP协议支持:HttpClient 4.3全面...

    httpclient4.3所需jar包

    HTTPClient是Java编程中用于处理HTTP协议的库,版本4.3是一个常用且稳定的版本。在进行网络爬虫开发时,HTTPClient库扮演了至关重要的角色,它提供了丰富的功能,如发起HTTP请求、处理响应、管理Cookie、实现重试...

    HttpClient4.3教程共51页.pdf.zip

    HttpClient 4.3版本是一个重要的里程碑,它引入了许多新特性、优化和改进,旨在提高性能,增强稳定性和易用性。这个教程可能是针对开发者设计的,帮助他们深入理解和有效地使用HttpClient 4.3进行网络请求。 ...

    httpclient4.3 和 httpcore4.4

    本文将深入探讨HttpClient 4.3和HttpCore 4.4这两个版本的关键特性、改进及使用方法。 HttpClient 4.3是一个重大的更新,它引入了诸多增强功能和性能优化。首先,HttpClient 4.3支持了HTTP/1.1和HTTP/2协议,使...

    httpclient4.3登陆人人

    标题中的“httpclient4.3登陆人人”指的是使用Apache HttpClient 4.3版本实现对人人网的自动登录功能。HttpClient是一个流行的开源Java库,它允许开发者执行HTTP请求并处理响应,广泛应用于网络爬虫、自动化测试和...

    httpClient4.3文档 PDF

    HttpClient 4.3是其一个重要的版本,提供了许多新特性和改进,以提升性能和易用性。这个压缩包包含两份文档,一份是.docx格式,一份是.pdf格式,两者内容相同,都是关于HttpClient 4.3的中文版指南。 HttpClient的...

    httpclient4.3中文教程

    HttpClient 4.3 版本可能包括对 HTTP/1.1 协议的改进和优化,增强了错误处理和性能,同时也可能提供了更好的可扩展性和定制性。开发者可以根据自己的需求配置 HttpClient 实例,以适应不同的网络环境和应用需求。 ...

    HttpClient 4.3教程.rar

    在HttpClient 4.3版本中,这个库进行了许多改进和优化,使其更适用于复杂的网络通信需求。本教程将详细介绍HttpClient 4.3的主要特性和使用方法。 一、HttpClient简介 HttpClient是一个Java库,它允许开发人员执行...

    httpclient4.3 封装工具类.zip

    这个压缩包“httpclient4.3 封装工具类.zip”很可能包含了一些预先封装好的工具类,用于简化使用HttpClient进行网络请求的过程。以下是一些关于HttpClient 4.3以及如何封装工具类的关键知识点: 1. **HttpClient ...

    httpclient4.3 设置代理

    javase http通讯技术 apache httpclient4.3 设置代理详解

    Httpclient 4.3 jar包

    在实际开发中,Apache HttpClient 4.3.x 版本被广泛应用于各种场景,如Web服务调用、数据抓取、文件上传下载等。它的灵活性和可配置性使其成为Java开发者的首选HTTP客户端库之一。通过这两个jar文件,开发者可以构建...

Global site tag (gtag.js) - Google Analytics