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

最新文章

  1. 【leetcode】Search Insert Position
  2. HDU1004 BALLO0N
  3. postgresql 触发器
  4. Asp.net MVC4.0自定义Html辅助方法
  5. WSGI、flup、fastcgi、web.py的关系
  6. ASP.NET MVC3细嚼慢咽---(2)模板页
  7. PHPUnit测试
  8. 《MATLAB数据分析与挖掘实战》赠书活动
  9. iOS高效开源类库
  10. JavaScript中的数值转换
  11. Xcode intellisense meaning of letters in colored boxes like f,T,C,M,P,C,K,# etc
  12. 使用proxychains 代理终端
  13. Java 实现缓存,一个线程存,一个线程取
  14. 支持向量机(SVM)的推导(线性SVM、软间隔SVM、Kernel Trick)
  15. Android摸索-二、解决Android SDK Manager下载太慢问题
  16. OSGi 系列(十二)之 Http Service
  17. JavaScript基础函数和词法分析以及常用的内置对象和使用方法(4)
  18. 【JVM】调优笔记3-----JVM参数配置 JDK1.8
  19. ArcGIS中的批量处理
  20. solr5.5.0在CenOS上的安装与配置

热门文章

  1. gmail注册时“此电话号码无法用于进行验证”
  2. python基础===猴子补丁
  3. 【技术分享】ReBreakCaptcha:利用谷歌来破解谷歌的验证码
  4. ThoughtWorks代码挑战——FizzBuzzWhizz游戏 通用高速版(C/C++ & C#)
  5. SipDroid +miniSIPServer搭建SIP局域网语音通话(一)
  6. [ python ] 练习作业 - 1
  7. Java显式锁学习总结之三:AbstractQueuedSynchronizer的实现原理
  8. python基础(11)--面向对象
  9. GUC-2 原子性
  10. jquery datatable的详细用法