ttpClient是个开源框架,封装了访问http的请求头,参数,内容体,响应等等,

HttpURLConnection是java的标准类,什么都没封装,用起来太原始,不方便

HttpClient实际上是对Java提供方法的一些封装,

在HttpURLConnection中的输入输出流操作,

在这个接口中被统一封装成了HttpPost(HttpGet)和HttpResponse,

这样,就减少了操作的繁琐性。

性能方面这里做一个测试:

HttpURLConnection VS HttpClient性能测试

版本: 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

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

相关文章:

HttpURLConnection和HTTPClient的比较,以及使用规则

HttpURLConnection与 HttpClient 区别/性能测试对比相关推荐

  1. (转)HttpURLConnection与 HttpClient 区别

    转自: HttpURLConnection与 HttpClient 区别/性能测试对比 - 尚码园HttpURLConnection与HttpClient随笔 目前在工做中遇到的须要各类对接接口的工做 ...

  2. HttpURLConnection及HttpClient选择(转)

    介绍Android中Http请求方式的选择.区别及几个常用框架对API的选择 1. 两种请求方式对比 Android Http请求API主要分两种: 第一种是Java的HttpURLConnectio ...

  3. HttpURLConnection与HttpClient提交FORM表单参数请求工具类

    来吧,小宝贝!!!!!!一个小白在项目过程中遇到的问题,给你们分享一下哈!!!!! 先看下我们请求的方式与请求体: 不难看出哈,请求的参数体并没有什么难点,那我为什么还要做一下总结呢?真的可能因为我太 ...

  4. HttpURLConnection与HttpClient浅析---转

    HttpURLConnection与HttpClient浅析 1. GET请求与POST请求 HTTP协议是现在Internet上使用得最多.最重要的协议了,越来越多的Java应用程序需要直接通过HT ...

  5. Struts1和Struts2的区别和对比(完整版)

    struts2不是struts1的升级,而是继承的webwork的血统,它吸收了struts1和webwork的优势. 先看struts的Action官方注释(struts1.3.8源代码) /** ...

  6. FreeSql与SqlSugar性能测试对比

    这篇文章主要是对SqlSugar 做一次简单的性能测试对比.主要针对插入.批量插入.批量更新.读取性能的测试: 测试环境 1..net core 2.2 2.FreeSql 0.3.17 3.sqlS ...

  7. commons-httpclient 和 httpclient 区别

    commons-httpclient 和 httpclient 区别 项目里的pom中,里面有这么两个包依赖. <dependency><groupId>commons-htt ...

  8. Android之访问网络,使用HttpURLConnection还是HttpClient?

    <span style="font-family: Arial; font-size: 14px; background-color: rgb(255, 255, 255);" ...

  9. Struts1和Struts2的区别和对比(完整版)(转)

    Struts1和Struts2的区别和对比(完整版)(转) Struts1和Struts2的区别和对比: Action 类:  • Struts1要求Action类继承一个抽象基类.Struts1的一 ...

最新文章

  1. kafka删除topic
  2. 机器学习实战笔记(Python实现)-02-k近邻算法(kNN)
  3. SCD缓慢变化维拉链表
  4. Android Studio的Gradle插件文档
  5. lstm网络_LSTM(长短期记忆网络)
  6. 合作︱2018CCF青年精英大会首设科技创业竞赛,快来报名吧!
  7. 1227: [SDOI2009]虔诚的墓主人
  8. SAS 金融函数 PMT IRR
  9. ABAP OLE下载到EXCEL
  10. Microsoft Office SharePoint Server 2007案例实战开发
  11. 天正的计算机快捷命令大全,天正建筑快捷键命令大全 2
  12. 伪蒙特卡洛(Quasi-Monte Carlo, QMC)随机
  13. JCEF3——谷歌浏览器内核Java版实现(一):使用jawt获取窗体句柄
  14. 安卓应用安全指南 5.4.3 通过 HTTPS 的通信 高级话题
  15. 查询tian01\tian02\tian03总和
  16. Android 流式布局FlowLayout
  17. MT4-EA自动化交易研究笔记(2022-04-22)
  18. 05-数据科学的基础:数据收集之市场调查_01 市场调查概括
  19. js英雄对战小游戏 看看你的人品
  20. python 域名转IP

热门文章

  1. Nginx配置参数说明
  2. javascript获取asp.net后台代码的方法
  3. ORACLE 将SQL的执行脚本返回值传给SHELL
  4. Android使用READ_CONTACTS读取手机联系人
  5. selenium鼠标操作 包含右击和浮层菜单的选择
  6. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 16—Recommender Systems 推荐系统...
  7. leetcode 222 Count Complete Tree Nodes
  8. android chrome iframe设置src属性无法启动app
  9. XCTF-高手进阶区:upload1
  10. JS:a=b=c,a=?