`
wj98127
  • 浏览: 268862 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

HttpURLConnection VS HttpClient性能测试

    博客分类:
  • Java
阅读更多

版本: HttpURLConnection  jdk1.6;HttpClient 3.0.1

在项目中有一个特别小的相关应用,在选择时做了一下测试,之前先对两个类进行下说明:

HttpURLConnection  java的标准类(java.net)

HttpClient Jakarta Commons HttpClient,提供对HTTP协议访问的封装,包括http的请求头,参数,内容体,响应等及多线程的应用。

 

测试代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;

public class HttpClientTest {

	private static String link = "http://www.baidu.com";

	public static void main(String[] args) {
		long a = System.currentTimeMillis();
		useHttpURlConnection();
		long b = System.currentTimeMillis();
		System.out.println("use httpurlconnection: "+(b-a));
		long c = System.currentTimeMillis();
		useHttpClient();
		long d = System.currentTimeMillis();
		System.out.println("use httpclient: "+(d-c));
	}
	
	public static void useHttpURlConnection(){
		HttpURLConnection conn = null;
		URL url = null;
		String result = "";
		try {
			url = new java.net.URL(link);
			conn = (HttpURLConnection) url.openConnection();
			conn.setConnectTimeout(10000);
			conn.connect();

			InputStream urlStream = conn.getInputStream();
			BufferedReader reader = new BufferedReader(new InputStreamReader(urlStream));
			String s = "";
			while ((s = reader.readLine()) != null) {
				result += s;
			}
			System.out.println(result);
			reader.close();
			urlStream.close();
			conn.disconnect();
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch(Exception e){
			e.printStackTrace();
		}
	}

	public static void useHttpClient(){
		HttpClient client = new HttpClient();
		GetMethod method = new GetMethod(link);
		method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
				new DefaultHttpMethodRetryHandler(3, false));
		try {
			int statusCode = client.executeMethod(method);

			if (statusCode != HttpStatus.SC_OK) {
				System.err.println("Method failed: " + method.getStatusLine());
			}
			byte[] responseBody = method.getResponseBody();
			System.out.println(new String(responseBody));
		} catch (HttpException e) {
			System.err.println("Fatal protocol violation: " + e.getMessage());
			e.printStackTrace();
		} catch (IOException e) {
			System.err.println("Fatal transport error: " + e.getMessage());
			e.printStackTrace();
		} finally {
			method.releaseConnection();
		}
	}
}

 

测试结果:

use httpurlconnection: 47

use httpclient: 641

 

结果很明显示,但是在实际应用中,还是应该根据实际的需求进行取舍。

分享到:
评论
2 楼 jsjzhou 2011-12-26  
有必要. 在实际项目我们就采用了HttpUrlConnection, 而没有用httpClient
1 楼 javaDevil 2010-06-07  
这个测试意义不大,就像jdbc的性能 和hibernate 比较一样

相关推荐

    commons-httpclient相关jar包

    对于新的项目,推荐使用Apache HttpClient 4.x或更高版本,或者考虑使用Java 7及以后版本提供的内置`java.net.HttpURLConnection`,因为这些更新的解决方案通常有更好的性能和兼容性,并且与现代Java生态系统更好地...

    httpclient

    - 对比HttpURLConnection:HttpClient提供了更丰富的功能和更好的性能,尤其是在处理重定向、身份验证和连接管理方面。 - 对比OkHttp:OkHttp是另一个流行的Java HTTP库,它在性能和简洁性方面表现出色,但...

    androidHtttp网络通信测试DEMO

    2. HttpClient:虽然已被废弃,但在Android 4.4(API Level 19)之前是常用的网络请求库,具有丰富的功能和良好的性能。 三、第三方网络库:OkHttp & Volley 1. OkHttp:由Square公司开发,是一个高效的HTTP客户端...

    httpclient.jar 文件下载

    HttpClient相比Java内置的HttpURLConnection,提供了更丰富的功能和更好的性能。它具有更好的连接管理,支持更多的HTTP特性,而且在处理复杂请求和响应时更加灵活。然而,对于简单的HTTP请求,HttpURLConnection可能...

    httpclient jar包

    虽然Java内置的HttpURLConnection也可以执行HTTP请求,但在某些高级特性和易用性方面,HttpClient具有显著优势,如更灵活的连接管理、更完善的错误处理以及更好的性能。 六、最佳实践 1. **使用连接池**:为避免...

    使用HttpUrlConnection实现上传文件 服务器端代码

    相比Apache HttpClient库,`HttpURLConnection`更轻量级,易于理解和使用,并且已经被Java官方推荐为首选的HTTP客户端API。 2. **上传文件的基本流程**: 文件上传通常涉及两个主要步骤:客户端(通常是用户界面)...

    httpclient_jar&api.zip

    相比于Java内置的HttpURLConnection,HttpClient提供了更高级的功能和更好的性能。另外,与Spring的RestTemplate相比,HttpClient更适合于低级别、高度定制化的HTTP操作。 总结,HttpClient是Java中处理HTTP请求的...

    解决HttpClient9.0兼容性jar包

    3. **测试**:完成以上步骤后,你需要在Android 9.0设备或模拟器上运行应用,确保HttpClient可以正常工作,没有崩溃或错误。 尽管引入第三方jar包可以解决兼容性问题,但这种方式并不总是最佳实践。使用...

    HttpUrlConnection_Test:HttpUrlConnection 测试

    虽然`HttpURLConnection`简单易用,但在处理复杂场景如代理、认证、连接池等方面,Apache HttpClient提供了更强大的功能和更好的性能。因此,在大型项目中,开发者可能倾向于使用HttpClient。 综上所述,`...

    安卓开发资源.docx

    它解决了Android自带HTTP框架(如HttpURLConnection和HttpClient)的兼容性和错误问题,提供了更稳定和高效的HTTP请求处理能力。 Retrofit:与OkHttp紧密集成的类型安全的HTTP客户端,用于Android和Java。它允许...

    Android使用HttpURLConnection访问网络

    相比于HttpClient,HttpURLConnection在Android 2.3( Gingerbread)之后被官方推荐使用,因为它更高效、更易于使用,并且能够更好地支持HTTP/2协议和连接池。 2. 初始化HttpURLConnection: 首先,你需要创建一个...

    json和httpClient的所有库

    HttpClient库在进行API调用、自动化测试、爬虫等场景下非常实用。 在这个压缩包文件“json和httpClient的所有库”中,我们可以期待找到以下内容: 1. JSON库: - **Gson**:Google提供的库,能够将Java对象转换为...

    Android Servlet WEB http

    在Android中,可以使用HttpURLConnection或HttpClient类创建GET请求,并通过URL参数传递数据。服务器端的Servlet捕获请求,解析URL中的参数,执行相应的操作,然后返回结果。 3. POST请求: POST请求用于向服务器...

    java 接口待测试时代发生的发生的发

    对于文件上传,Java通常会使用HttpURLConnection或者Apache HttpClient库来处理HTTP请求,而在服务器端,可能使用Spring Framework的MultipartFile接口来接收并处理上传的文件。文件上传可能涉及到的细节包括:文件...

    TQLOnlineTest.java

    这样的测试可以涵盖多个方面,如功能测试、性能测试、安全测试等,以确保产品在上线后能够稳定运行。 在Java中,有许多流行的测试框架可以帮助我们编写和执行测试,如JUnit、TestNG和Mockito等。JUnit是最常见的...

    Web Service通用客户端和测试工具

    - **HttpClient**:Java内置的HttpURLConnection或Apache HttpClient库可以用于编写自定义的Web服务测试脚本。 3. **WSDL和SOAP**:WSDL文件描述了Web服务的接口,包括服务的位置、使用的消息格式和操作。SOAP则是...

    java测试服务器响应时间

    在Java中,我们可以使用`java.net.HttpURLConnection`或者第三方库如Apache HttpClient、OkHttp来发送HTTP请求。通过设置超时、读取响应时间等方法,我们可以精确测量服务器的响应时间。此外,Java的`java.time`包...

    Java Web客户端测试工具.rar

    8. **性能测试**: 高级的测试工具可能会包含性能测试功能,比如模拟并发请求,分析响应时间和吞吐量,这对于评估服务的性能和可扩展性非常有用。 9. **文档生成**: 另一个实用功能可能是自动生成或解析WSDL文件,...

    Java爬虫,信息抓取的实现

    8. **测试与优化**:测试爬虫效果,根据实际情况调整爬虫速度、并发数等参数,优化性能。 总之,Java爬虫的实现涉及网络通信、HTML解析、数据处理等多个方面,通过熟练掌握相关技术和工具,可以构建出高效稳定的...

Global site tag (gtag.js) - Google Analytics