HttpClient和HttpURLConnection的使用和区别
https://www.cnblogs.com/liushuibufu/p/4140913.html
功能用法对比
从功能上对比,HttpURLConnection比HttpClient库要丰富很多,提供了很多工具,封装了http的请求头,参数,内容体,响应,还有一些高级功能,代理、COOKIE、鉴权、压缩、连接池的处理。
HttpClient高级功能代码写起来比较复杂,对开发人员的要求会高一些,而HttpURLConnection对大部分工作进行了包装,屏蔽了不需要的细节,适合开发人员直接调用。
另外,HttpURLConnection在2.3版本增加了一些HTTPS方面的改进,4.0版本增加一些响应的缓存。
性能对比
HttpUrlConnection直接支持GZIP压缩;HttpClient也支持,但要自己写代码处理。
HttpUrlConnection直接支持系统级连接池,即打开的连接不会直接关闭,在一段时间内所有程序可共用;HttpClient当然也能做到,但毕竟不如官方直接系统底层支持好。
HttpUrlConnection直接在系统层面做了缓存策略处理(4.0版本以上),加快了重复请求的速度。
这篇文章对两者的速度做了一个对比,做法是两个类都使用默认的方法去请求百度的网页内容,测试结果是使用httpurlconnection耗时47ms,使用httpclient耗时641ms。httpURLConnection在速度有比较明显的优势,当然这跟压缩内容和缓存都有直接关系。
未来发展
HttpClient 适用于 web browsers, 他们是可扩展的,并且拥有大量的稳定APIs。但是,在不破坏其兼容性的前提下很难对如此多的APIs做修改。因此,Android 团队对修改优化Apache HTTP Client表现的并不积极。
HttpURLConnect 是一个通用的、适合大多数应用的轻量级组件。这个类起步比较晚,很容易在主要API上做稳步的改善。但是HttpURLConnection在在Android 2.2及以下版本上存在一些令人厌烦的bug,尤其是在读取 InputStream时调用 close()方法,就有可能会导致连接池失效了。
Android团队未来的工作会将更多的时间放在优化HttpURLConnection上,它的API简单,体积较小,因而非常适用于Android项目。压缩和缓存机制可以有效地减少网络访问的流量,在提升速度和省电方面也起到了较大的作用。
选用建议
如果一个Android应用需要向指定页面发送请求,但该页面并不是一个简单的页面,只有当用户已经登录,而且登录用户的用户名有效时才可访问该页面。如果使用HttpURLConnection来访问这个被保护的页面,那么需要处理的细节就太复杂了。这种情况建议使用HttpClient。
Android2.3及以上版本建议选用HttpURLConnection,2.2及以下版本建议选用HttpClient。新的应用都建议使用HttpURLConnection。
HttpClient和HttpURLConnection的使用和区别的更多相关文章
- HttpClient和HttpURLConnection的使用和区别(下)
转自来自点击打开链接 接着上一篇,我们继续来分析HttpURLConnection的使用,以及两者的共同点和区别. 目录 用法 HttpURLConnection 区别 引用资料 用法 HttpURL ...
- HttpClient和HttpURLConnection的使用和区别(上)
转自:点击打开链接 相信很多Android开发者碰到涉及到Http协议的需求时,都和我一样在犹豫是使用HttpClient还是使用HttpURLConnection呢.我在网上也搜索了很多文章,来分析 ...
- java分别通过httpclient和HttpURLConnection获取图片验证码内容
前面的文章,介绍了如何通过selenium+Tesseract-OCR来识别图片验证码,如果用接口来访问的话,再用selenium就闲的笨重,下面就介绍一下分别通过httpclient和HttpURL ...
- Android 网络编程之---HttpClient 与 HttpURLConnection 共用cookie
HttpClient 与 HttpURLConnection 共用 SessionId HttpClient 与 HttpUrlConnection 是Android 中HTTP操作最常见的訪问方式. ...
- 为HttpClient和HttpURLConnection添加中国移动代理
转自: http://www.2cto.com/kf/201111/112100.html 在android中,一般需要联网的时候前,都要做一次网络的判断,判断当前的网络状态!然后开始请求网络 当我们 ...
- HttpClient和HttpURLConnection的区别
总结了网上的一些资源,主要有以下两个观点: 分析一: 在研究Volley框架的源码中,发现它在HTTP请求的使用上比较有意思,在Android 2.3及以上版本,使用的是HttpURLConnecti ...
- [Android]HttpClient和HttpURLConnection的区别
转载:http://blog.csdn.net/guolin_blog/article/details/12452307 最近在研究Volley框架的源码,发现它在HTTP请求的使用上比较有意思,在A ...
- HTTP基础与Android之(安卓与服务器通信)——使用HttpClient和HttpURLConnection
查看原文:http://blog.csdn.net/sinat_29912455/article/details/51122286 1客户端连接服务器实现内部的原理 GET方式和POST方式的差别 H ...
- Android 实现http通信(servlet做服务器端) HttpClient、HttpURLConnection实现登录验证
一,写好服务器端 在eclipse或其它javaee开发工具中新建一个web项目(我这里的项目名是:Android),建一个servlet(我这里的servlet名是:LoginServlet),模拟 ...
随机推荐
- selenium-server-standalone 和selenium-server, selenium-java的区别
https://stackoverflow.com/questions/30865539/selenium-server-standalone-jar-vs-selenium-java-jar
- 【清北学堂2018-刷题冲刺】Contest 3
比较数学的一场,难度稍大. Task 1:数数 [问题描述] fadbec 很善于数数,⽐如他会数将a 个红球,b 个黄球,c 个蓝球,d个绿球排成⼀列,求出任意相邻不同⾊的方案数⽬. 现在R ...
- tcpdump高级过滤
一:查看帮助选项 tcpdump --help Usage: tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ] [ -C ...
- thinkphp 实现分页
一.一个条件的查询数据 查询数据自然是先要显示出数据,然后根据条件进行查询数据 (1)显示出表的数据 这个方法我还是写在了HomeController.class控制器文件中 (1.1)写了一个方法s ...
- python自动化开发-[第十二天]-前端html
今日概要: 前端基础之html 1.web服务器的本质: #!/usr/bin/python # -*- coding:utf-8 -*- import socket def handle_reque ...
- Java泛型、List接口整理
泛型 package com.oracle.demo01; import java.util.HashMap; import java.util.Iterator; import java.util. ...
- python 微信爬虫实例
单线程版: import urllib.request import urllib.parse import urllib.error import re,time headers = (" ...
- linux chmod命令使用
chmod:更改文件9个属性 Linux文件属性有两种设置方法,一种是数字,一种是符号. Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/wri ...
- Jpush极光推送
require 'jpush' class SidkiqJpushWorker include Sidekiq::Worker # args[0] msg : args[1] region_id ; ...
- 编写高质量Python代码总结:待完成
1:字符串格式化 #避免%过多影响阅读 print('hello %(name)s'%{'name':'tom'}) #format方法print('{name} is very {emmition} ...