HttpURLConnection与 HttpClient 区别/性能测试对比
2024-10-19 00:36:48
HttpClient是个开源框架,封装了访问http的请求头,参数,内容体,响应等等,
HttpURLConnection是java的标准类,什么都没封装,用起来太原始,不方便
HttpClient实际上是对Java提供方法的一些封装,
在HttpURLConnection中的输入输出流操作,
在这个接口中被统一封装成了HttpPost(HttpGet)和HttpResponse,
这样,就减少了操作的繁琐性。
性能方面这里做一个测试:
HttpURLConnection VS HttpClient性能测试
版本: HttpURLConnection jdk1.7;HttpClient 4.3
在项目中有一个特别小的相关应用,在选择时做了一下测试,之前先对两个类进行下说明:
HttpURLConnection java的标准类(java.net)
HttpClient Jakarta Commons HttpClient,提供对HTTP协议访问的封装,包括http的请求头,参数,内容体,响应等及多线程的应用。
public class HttpTest { 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));
} private static void useHttpClient() {
try {
HttpClientUtil.get(link, null, null);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} 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;
}
reader.close();
urlStream.close();
conn.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch(Exception e){
e.printStackTrace();
}
}
}
结果很明显示,但是在实际应用中,还是应该根据实际的需求进行取舍。
参考:
http://www.cnblogs.com/langtianya/p/4001499.html
http://xiaowei-qi-epro-com-cn.iteye.com/blog/1973295
最新文章
- 【leetcode】Search Insert Position
- HDU1004 BALLO0N
- postgresql 触发器
- Asp.net MVC4.0自定义Html辅助方法
- WSGI、flup、fastcgi、web.py的关系
- ASP.NET MVC3细嚼慢咽---(2)模板页
- PHPUnit测试
- 《MATLAB数据分析与挖掘实战》赠书活动
- iOS高效开源类库
- JavaScript中的数值转换
- Xcode intellisense meaning of letters in colored boxes like f,T,C,M,P,C,K,# etc
- 使用proxychains 代理终端
- Java 实现缓存,一个线程存,一个线程取
- 支持向量机(SVM)的推导(线性SVM、软间隔SVM、Kernel Trick)
- Android摸索-二、解决Android SDK Manager下载太慢问题
- OSGi 系列(十二)之 Http Service
- JavaScript基础函数和词法分析以及常用的内置对象和使用方法(4)
- 【JVM】调优笔记3-----JVM参数配置 JDK1.8
- ArcGIS中的批量处理
- solr5.5.0在CenOS上的安装与配置
热门文章
- gmail注册时“此电话号码无法用于进行验证”
- python基础===猴子补丁
- 【技术分享】ReBreakCaptcha:利用谷歌来破解谷歌的验证码
- ThoughtWorks代码挑战——FizzBuzzWhizz游戏 通用高速版(C/C++ &; C#)
- SipDroid +miniSIPServer搭建SIP局域网语音通话(一)
- [ python ] 练习作业 - 1
- Java显式锁学习总结之三:AbstractQueuedSynchronizer的实现原理
- python基础(11)--面向对象
- GUC-2 原子性
- jquery datatable的详细用法