Android程序最重要的模块就是网络部分,如何从网络上下载数据,如何将处理过的数据上传至网络,往往是android程序的关键环节。

       Android原生提供基于HttpClient和HttpUrlConnection的两种网络访问方式。利用原生的这两种方式编写网络代码,需要自己考虑很多,获取数据或许可以,但是如果要将手机本地数据上传至网络,根据不同的web端接口,需要组织不同的数据内容上传,给手机端造成了很大的工作量。
       目前有几种快捷的网络开发开源框架,给我们提供了非常大的便利,他们应该是android网络处理部分开源框架的前三名。
            
            loopj这款开源框架一直是我钟爱的网络框架,在我写过的相当多的程序中,一直使用该框架,以至于对这个框架产生了厌倦的情绪。
            太详细的使用文档,太简单的使用方式,它就像是一门高级语言,定制好了所有的东西,你只需要拼凑一下就能够处理,所以你想定制更加细节的操作,只有自己动手,反而造成了一些不必要的麻烦。
            loopj在前一段时间对https的支持并不好,如果要支持https,则需要费点功夫。
            1.4几个版本的升级对前部分代码的承接性不够好,造成了我对这个框架的厌倦。
            
                    
                    获取一张图片:
 
AsyncHttpClient client = new AsyncHttpClient();

client.get("http://example.com/file.png", new FileAsyncHttpResponseHandler(/* Context */ this) {

@Override

public void onSuccess(int statusCode, Header[] headers, File response) {

// Do something with the file `response`

}

});
构造请求参数:
RequestParams params = new RequestParams();
params.put("key", "value");
params.put("more", "data");

loopj提供了各种关于返回参数的解析ResponseHandler,这也是我变得不喜欢loopj的一种原因。

        
            
 
            对于Loopj来说,HttpRequest就是一种简单粗暴,一个请求可以涵盖在一句代码当中,不给任何一点冗余的成分。
String response = HttpRequest.get("http://google.com").body();
                    将数据打印到控制台,或者其他的流:   
HttpRequest.get("http://google.com").receive(System.out);
                    忽略https的安全:
                    
HttpRequest request = HttpRequest.get("https://google.com");

//Accept all certificates

request.trustAllCerts();

//Accept all hostnames

request.trustAllHosts();
            对于小项目,这种网络框架简直就是一种幸福的选择。
                    
 
         
            
            相比于loopj和HttpRequest,okhttp要更为强大,使用方式也稍显复杂,但是却是我目前最喜欢的感觉。
            这是著名公司Square的开源框架,出手不凡。
            下面贴出我项目中的代码:
          
                    OkHttpClient client = new OkHttpClient();
client.networkInterceptors().add(new StethoInterceptor()); RequestBody body = new FormEncodingBuilder()
.add("data", data).add("token", getToken(data))
.add("system", "sample").build(); Request request = new Request.Builder()
.url("http://sample.com/api/v1")
.post(body).build();
Response response = client.newCall(request).execute();
final String reslut = response.body().string();
 
     在上述代码中有这样一行代码:
        client.networkInterceptors().add(new StethoInterceptor());
        这是使用facebook的开源stetho来进行查看网络访问情况的一个工具。

okhttp可以通过chrome的开发工具来查看手机的网络访问情况,就和web开发人员一样可以在浏览器中查看手机访问网络的实时信息,查看提交和返回结果,大大的方便了开发,这个工具的使用将会专门写一篇博客来进行讲解。


        
 
 
 
 
 
 
       

Android最流行的网络框架(原创)的更多相关文章

  1. Android中android-async-http开源网络框架的简单使用

    android-async-http开源网络框架是专门针对Android在Apache的基础上构建的异步且基于回调的http client.所有的请求全在UI线程之外发生,而callback发生在创建 ...

  2. [ 流行的网络框架 ] AFN & ASI

    1.AFN & ASI(早已经停止更新,但现在许多公司也在使用.) AFNetWorking地址:https://github.com/AFNetworking/AFNetworking AS ...

  3. Android网络框架之Retrofit + RxJava + OkHttp 变化的时代

    1.什么是Retrofit框架? 它是Square公司开发的现在非常流行的网络框架,所以我们在导入它的包的时候都可以看到这个公司的名字,目前的版本是2. 特点: 性能好,处理快,使用简单,Retrof ...

  4. Android网络框架源码分析一---Volley

    转载自 http://www.jianshu.com/p/9e17727f31a1?utm_campaign=maleskine&utm_content=note&utm_medium ...

  5. 家庭洗车APP --- Androidclient开展 之 网络框架包介绍(一)

    家庭洗车APP --- Android客户端开发 之 网络框架包介绍(一) 上篇文章中给大家简单介绍了一些业务.上门洗车APP --- Android客户端开发 前言及业务简单介绍,本篇文章给大家介绍 ...

  6. 60.Android通用流行框架大全

    转载:https://segmentfault.com/a/1190000005073746 Android通用流行框架大全 1. 缓存 名称 描述 DiskLruCache Java实现基于LRU的 ...

  7. 15类Android通用流行框架

    15类Android通用流行框架 Android流行框架 缓存 DiskLruCache Java实现基于LRU的磁盘缓存 图片加载 Android Universal Image Loader 一个 ...

  8. 我的Android进阶之旅------>Android通用流行框架大全

    Android通用流行框架大全 缓存 图片加载 图片处理 网络请求 网络解析 数据库 依赖注入 图表 后台处理 事件总线 响应式编程 Log框架 测试框架 调试框架 性能优化 本文转载于lavor的博 ...

  9. Android OKHttp网络框架

    好久没逛简书了.这周公司的项目也已经愉快的迭代了新版本,对于之前一直存留的东西一直没怎么梳理,今天想说说这两年特别火的网络框架.okhttp我想大部分Android开发者都不陌生,因为它的到来.是我们 ...

随机推荐

  1. 解析PHP中如何将数组变量写入文件

    在用PHP记录日志,或者是 Ajax 请求出错想要 debug 的时候.我们一般都会将信息写入到一个指定的文件当中.然后根据相应的信息来处理问题.比如笔者最喜欢在用 Ajax 取不到数据的时候,在PH ...

  2. 记一次vue2项目部署nginx静态文件404解决过程

    github上下的一个vue2的项目,运行可以的,webpack打包后,nginx请求报错: 发现路径很奇怪啊,所以果断来到build.js文件中看看是不是哪里不对. 已经一番引用查找: 发现在这里配 ...

  3. Android开发--用户定位服务--UserLocation

    Android开发--用户定位服务--UserLocation 2013-01-28 08:32:26     我来说两句      作者:BruceZhang 收藏    我要投稿 [java] & ...

  4. Spring中AOP的理解

    1.AOP的概念 AOP(AspectOriented Programming,面向切面编程)指的是可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下个程序动态统一添加功能的一种技术.AOP ...

  5. 算法笔记_116:算法集训之代码填空题集三(Java)

     目录 1 数组转置 2 文件管理 3 显示为树形 4 杨辉三角系数 5 圆周率与级数 6 整数翻转 7 自行车行程 8 祖冲之割圆法 9 最大5个数 10 最大镜像子串   1 数组转置 编写程序将 ...

  6. c++中的对象复制

    (1)this指针 this是一个隐含于每个类的成员函数的特殊指针,该指针是一个指向正在被某个成员函数操作的对象的指针. 当一个对象调用成员函数时,编译程序先将对象的地址赋给this指针,也就是说,当 ...

  7. SQLSERVER常用计数器

    复制下面全部--开始--运行--profmon.exe--性能监视器--粘贴计数器列表 <OBJECT ID="DISystemMonitor1" WIDTH="1 ...

  8. Drupal启动阶段之二:页面缓存

    页面缓存是什么意思?有些页面浏览量非常大,而且与状态无关,这类页面就可以使用页面缓存技术.在页面第一次请求完毕以后,将响应结果保存起来.下一次再请求同一页面时,就不需要从头到尾再执行一遍,只需要将第一 ...

  9. MongoDB 操作手冊CRUD 删除 remove

    删除记录 概述 在MongoDB中,db.collection.remove()方法用于删除集合中的记录.能够删除全部记录,删除全部符合条件的记录.或者是仅删除一条记录. 删除全部记录 删除一个集合中 ...

  10. C#音视频网络流解码:H264视频和ACC音频

    下面两种方式是直接翻译过来的,还有问题,比如指针的使用和值的传入.考虑C#和C++的差异,还是要抱着怀疑的态度去看待,不一定是对的. H264视频解码网络流: using FFmpeg.AutoGen ...