安卓应用的HTTP请求方式:Apache HTTP Client和HttpURLConnection

第29章:PCL PrincipalCurvatures 曲率估计 PrincipalCurvatures(主曲率估计)是一种用于计算点云表面曲率的算法。曲率描述了曲面局部的弯曲程度,是表面几何特征的重要指标。在点云处理中,估计表面的曲率对于形状分析、物体识别、表面重建等任务非常重要。主曲率是曲面上某一点的最大最小曲率方向。通过计算点云的主曲率,我们可以获得点云中每个点的局部形状特征。通常情况下,主曲率包括两个主要参数:最大主曲率(最大曲率方向上的曲率)最小主曲率(最小曲率方向上的曲率)。优点缺点提供了对点云表面局部形状的深入分析。 阅读详情

原文链接:Android’s HTTP Clients

  Android平台上的大多数联网应用都使用HTTP来发送和接收数据。Android平台包括两种HTTP client:HttpURLConnection和Apache HTTP Client。两者都支持HTTPS、流上传/下载、超时时间设置、IPV6及连接池。

Apache HTTP Client

  DefaultHttpClient及 AndroidHttpClient都是针对Web浏览器的可扩展的HTTP clients。它们拥有数量庞大大且灵活的API,而且它们的实现都比较稳定,但是都有一些bug。

  不过,由于它们数量庞大的API导致我们无法在不破坏它们兼容性的情况下改进它们。所以Android开发团队并不热衷于Apache HTTP Client。

HttpURLConnection

  HttpURLConnection是一个针对一般用途的轻量级的HTTP client,并适用于大多数Android应用。这个类有一个比较低调的开始,不过它特别关注的那些API使我们可以简单、稳定的改进它。

  在Froyo(Android2.2)版本之前,HttpURLConnection有一些让人十分沮丧的bugs。特别是当我们在一个可读的InputStream上调用close()时,会破坏连接池。我们可以通过禁用连接池来规避这个问题(代码如下):

  private void disableConnectionReuseIfNecessary() {
    // HTTP connection reuse which was buggy pre-froyo
    if (Integer.parseInt(Build.VERSION.SDK) < Build.VERSION_CODES.FROYO) {
        System.setProperty("http.keepAlive", "false");
    }
  }

  在Gingerbread(Android2.3)中,我们新增了透明的相应压缩(原文是:we added transparent response compression.哪位大神知道正确翻译是啥的话,帮忙提醒下 -。-)。HttpURLConnection 会自动在它发出的请求中添加一个header,并且会处理对应的响应。

 Accept-Encoding: gzip

  你可以通过配置你的Web服务器来压缩返回给客户端的响应,从而利用该新特性。如果压缩后的响应有异常,可以在这个类的api文档中查看如何禁用该特性。

  尽管HTTP的Content-Length头中返回了压缩后的大小,但是使用getContentLength()的返回值来设定那些未压缩数据的buffer是一个错误。因此,我们应该从响应中读取每一个字节直到InputStream.read()返回-1。

在Gingerbread(Android2.3)中,我们还针对HTTPS做了一些提升。HttpURLConnection尝试与 Server Name Indication (SNI)进行互联,这是一种允许多个HTTPS host共享一个IP地址的技术。同时还使用压缩及session tickets。假如HttpURLConnection连接失败,HttpURLConnection会去掉以上特性后自动尝试重新连接。这使得HttpURLConnection在不破坏与旧的server兼容性的情况下,连接up-to-date servers更高效。

 在Ice Cream Sandwich(Android4.0)中,我们正在添加一个response cache。应用这个特性,HTTP请求会以下列三种情况被响应:
  1、完全缓存的响应,直接从本地获取。这种状况下完全不需要联网,并且可以立即响应。
  2、有条件的被缓存的响应,这些缓存是否需要刷新需要从服务器确认。客户端发送一个类似“昨天以来,如果foo.png发生过变动,就给我一个新的”这样的请求,服务器会返回一个新的图片或者一个304 Not Modified状态吗给客户端。假如请求的内容没有变动,则内容不会被再次下载。
  3、没有缓存的响应,从服务器获取。这种响应会被缓存起来以备以后使用。

  可以通过反射来开启那些支持缓存HTTP响应的设备上的缓存功能。下面的代码演示了如何在不影响Ice Cream Sandwich(Android4.0)以前的版本的情况下开启缓存功能。

  private void enableHttpResponseCache() {
    try {
        long httpCacheSize = 10 * 1024 * 1024; // 10 MiB
        File httpCacheDir = new File(getCacheDir(), "http");
        Class.forName("android.net.http.HttpResponseCache")
            .getMethod("install", File.class, long.class)
            .invoke(null, httpCacheDir, httpCacheSize);
    } catch (Exception httpResponseCacheNotAvailable) {
    }
  }
  你应该总是配置你的Web服务器以便在HTTP响应的头中设置与缓存相关的内容。

  什么是最好的HTTP client

   在Froyo(Android2.2)及更早期的版本中,Apache HTTP client相对于HttpURLConnection 拥有更少的bug。所以这种情况下Apache HTTP clien是最好的选择。

   从Gingerbread(Android2.3)开始,HttpURLConnection则是最好的选择。它简单的API和比较小的体积使他更适合Android。Transparent compression和响应缓存则减少了网络使用,提升了加载速度和电池性能。新的应用应该使用HttpURLConnection,同时HttpURLConnection也是我们以后的工作重心所在。

科研必备:15款顶尖AI科研工具全面分析汇总(持续更新ing) 科研必备:15款AI科研工具全面分析汇总(持续更新ing) 阅读详情

相关推荐

深入Android通过Apache HTTP访问HTTP资源示例代码

深入Android通过Apache HTTP访问HTTP资源示例代码 深入Android通过Apache HTTP访问HTTP资源示例代码

Http请求-HttpURLConnectionHttpClient

常见的Http请求方式

weixin_40017062的博客 1524

中文翻译 JESD22-B116B 引线键合剪切试验方法-翻译.pdf

中文翻译 JESD22-B116B 引线键合剪切试验方法-翻译.pdf

Android网络请求

Android网络请求通常用的是HttpURLConnectionHttpClient类,HttpURLConnection类是由java提供的网络访问请求类,而HttpClient类是由apache提供的,它相当于是一个增强版本的HttpURLConnection类,换句话来说,HttpURLConnection可以做的事情HttpClient全部可以做。 由于网络请求Android

u012432475的专栏 913

Android使用Apache HttpClient发送GET、POST请求

简单的网页下载,HttpURLConnection可以完成,但是涉及到用户登录等权限相关问题,就需要涉及Session、Cookies。,就很难使用HttpURLConnection来处理了。Apache开源组织提供了一个HttpClient项目可以处理这些问题。HttpClient关注于如何发送请求、接受请求,以及管理HTTP链接。 使用HttpClient对象来发送请求、接受响应步骤:

大米粒ing 5307

android 6.0 http请求,Android 6.0 使用 Apache HttpClient

Android 6.0版本已经已经基本将Apahce Http Client移除出SDK。那么问题来了,如果我在以前的项目中使用了Apache HttpClient相关类,怎么办呢?请看官网给出的答案Apache HTTP Client RemovalAndroid 6.0 release removes support for the Apache HTTP client. If your ap...

weixin_35775778的博客 267

PC移动端浏览器请求

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5

qq_40279560的博客 4866

C++ 实现BMP位图读写

BMP文件读写 1. 问题描述 分析图像格式BMP –可借助Matlab体会图像的读写显示。 利用C语言编写程序,实现图像的输入输出显示。 –自行编写BMP文件的读写。 –调用开源库实现其他若干常见图像视频文件格式的输入输出。 –设计功能较完整的界面。 2. 技术背景 opencv Visual Studio 2019 3. 解决方案 3.1 BMP文件结构 BMP文件由4部分组成: 位图文件头(bitmap-file header) 位图信息头(bitmap-informati

qq_41195985的博客 5016

纯C语言利用位图底层结构实现位图缩放

此为课程设计的第四题,这道题体现了大作业的精髓:在抄中知道,在抄中学习,在抄中苟且。以下是找了各种大神写的范本(比如那个双线性插值的实现)位图结构的分析,东拼西凑写出来的东西,过程中也学了一些知识。如果不是要求纯C语言实现或许能用opencv,但是我也没有深入了解过。希望对一部分同学能有帮助。 看之前请先搞懂位图的内部结构,否则会搞不懂这些名词的意思,要用的话请至少改变量名函数顺序,谢谢。 位图内部结构分析 原题: 涉及知识点:文件读写、结构体定义、内存管理、基本图像处理算法、命令行参数 要求: 编写一

zimuzi2019的博客 5832

C++ 哈希的应用【位图】

位图(bitset)是一种特殊的数据结构,仅仅依靠01表示当前位置是否有数据存在,常用于对查找速度存储空间有着高要求的场景中,除此之外,位图还可以配合宏定义,实现同时传递多个参数,比如系统调用open,其中的参数2(打开方式)就是一个简单的位图结构

北 海的博客 6147

位图文件读写综述

位图文件读写综述 位图文件读写综述一、位图文件结构 1. 位图文件头 2. 位图信息2.1 位图信息头2.2 颜色表 3. 位图数据 二、位图文件读写操作1. 类的声明 2. 位图的读取 3. 位图读取过程中的调色板的创建调用 4. 位图的显示 5. 位图的存储 6. 新位图的创建 7. 其它问题 三、CFG_DIB的使用关于位图文件操作的资料很多。为了方便开发人员的工作,写下本文,介绍了位图文

冷剑魂的专栏——垃圾场 1544

C语言读写bmp位图文件

bitmap格式图片是未经压缩的,一般24bit位图(即一个像素点以24个二进制位表示)。 分别用8个二进制位表示R/G/B三种颜色,这样一共可以表示256*256*256=16777216种颜色。 8bit的位图则为黑白图像,32bit位图除16777216种颜色外还有8个bit表示光栅(有待具体研究)。 bitmap格式图片都有文件头、图片信息头、图片数据,这片东西估计需要另外再

super_bert的专栏 7699

android http postget,AndroidApache HttpClient 实现POSTGet请求

快速记忆(POST)1. 要想连接网络,肯定需要一个客户端对象,所以首先创建一个客户端对象HttpClient2. 拥有客户端对象之后肯定需要对互联网进行访问,首先要对互联网进行请求,所以要创建一个请求对象HttpUriRequest,因为是Post请求,所以使用HttpPost3. 我们知道请求对象包含请求行(方法、路径、协议),消息头,请求实体三部分。通过n...

weixin_39922394的博客 459

Android Http请求方法汇总,含泪狂刷Android基础面试118题

2URLDecoder.decode("测试","utf-8"); 2.使用ApacheHttpClient访问网络资源 (1)get请求 public String executeGet() { String result = null; BufferedReader reader = null; try { HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(); request.setURI(new U

m0_63737692的博客 1148

Android开发app时允许使用http

比较高的把版本中,处于安全考虑,只能使用https。

qq_71547093的博客 1049

Android HTTP 请求方式 HttpClient

环境准备 Java 开发时,后台的 Http 请求操作通常使用的是 org.apache.http.client.HttpClientAndroid 开发同样可以使用这些第三方 API。 单纯就使用 ApacheHttpCLient 来说,Android 编码 与 Java 编码中 API 使用都是基本一样。 HttpClient 依赖 本人使用的是 Android Studio...

蚩尤后裔-汪茂雄 3315

Android-网络请求数据使用apache httpclient v4

Android手机应用基本都有向服务器请求数据的操作,例如音乐软件向服务器请求音乐列表,微博软件向服务器请求微博内容等等。 Android SDK提供了HttpURLConnection类,以及apache下开源的httpclientHttpClient简介(百度上抄的):HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过

lonely_fireworks的专栏 2063

Android开发进阶(四)--深入Android通过Apache HTTP访问HTTP资源

深入Android通过Apache HTTP访问HTTP资源 HttpClient接口 实现类:DefaultHttpClient这也是常用的一个用于实现HttpClient接口的子类, HttpClietnt中定义的常用抽象方法 方法名称 描述 public abstract HttpResponse execute (HttpUriRequest r...

mmdev 223

Android网络请求库 - Say hello to OkHttp

引言 网络请求Android开发中必不可少的一块,通常我们可以用原生的HttpUrlConnection或者Apache封装的HttpClient来完成网络请求的实现。 如今来说,HttpClient在API23问世后也被废弃了。也就是说Google现在更推荐我们使用HttpUrlConnection来实现Http网络请求。 但以Http请求来说,大多数时候都是遵循一定的套

LaterEqualsNever 5330

企业知识库如何实现多端统一使用:浏览器、AndroidiOS客户端介绍

企业知识库不能只在办公室电脑上好用,实施人员到了客户现场要查部署记录,工厂员工站在设备旁要看操作手册,出差的人也可能临时确认一份制度或项目资料。zyplayer-doc支持电脑手机浏览器,也提供Android、iOS原生客户端,企业部署一套服务即可,账号、权限文档都在服务端统一管理,不需要为移动端另建一套知识库。

u010047583的专栏 242
上一篇: Firefox31更新后,贴吧显示异常
下一篇: 关于Android 尝试在onCreate方法内测量view的宽高的测试
hn_刘潇
博客等级 码龄14年 11粉丝 27原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值