Android最流行的网络框架
2015-10-27 10:50
579 查看
转自:http://www.cnblogs.com/peiandsky/p/4376718.html
Android程序最重要的模块就是网络部分,如何从网络上下载数据,如何将处理过的数据上传至网络,往往是android程序的关键环节。
Android原生提供基于HttpClient和HttpUrlConnection的两种网络访问方式。利用原生的这两种方式编写网络代码,需要自己考虑很多,获取数据或许可以,但是如果要将手机本地数据上传至网络,根据不同的web端接口,需要组织不同的数据内容上传,给手机端造成了很大的工作量。
目前有几种快捷的网络开发开源框架,给我们提供了非常大的便利,他们应该是android网络处理部分开源框架的前三名。
1.https://github.com/loopj/android-async-http
loopj这款开源框架一直是我钟爱的网络框架,在我写过的相当多的程序中,一直使用该框架,以至于对这个框架产生了厌倦的情绪。
太详细的使用文档,太简单的使用方式,它就像是一门高级语言,定制好了所有的东西,你只需要拼凑一下就能够处理,所以你想定制更加细节的操作,只有自己动手,反而造成了一些不必要的麻烦。
loopj在前一段时间对https的支持并不好,如果要支持https,则需要费点功夫。
1.4几个版本的升级对前部分代码的承接性不够好,造成了我对这个框架的厌倦。
获取一张图片:
AsyncHttpClient client = new AsyncHttpClient();
loopj提供了各种关于返回参数的解析ResponseHandler,这也是我变得不喜欢loopj的一种原因。
对于Loopj来说,HttpRequest就是一种简单粗暴,一个请求可以涵盖在一句代码当中,不给任何一点冗余的成分。
将数据打印到控制台,或者其他的流:
忽略https的安全:
HttpRequest request = HttpRequest.get("https://google.com");
对于小项目,这种网络框架简直就是一种幸福的选择。
3.https://github.com/square/okhttp
相比于loopj和HttpRequest,okhttp要更为强大,使用方式也稍显复杂,但是却是我目前最喜欢的感觉。
这是著名公司Square的开源框架,出手不凡。
下面贴出我项目中的代码:
在上述代码中有这样一行代码:
Android程序最重要的模块就是网络部分,如何从网络上下载数据,如何将处理过的数据上传至网络,往往是android程序的关键环节。
Android原生提供基于HttpClient和HttpUrlConnection的两种网络访问方式。利用原生的这两种方式编写网络代码,需要自己考虑很多,获取数据或许可以,但是如果要将手机本地数据上传至网络,根据不同的web端接口,需要组织不同的数据内容上传,给手机端造成了很大的工作量。
目前有几种快捷的网络开发开源框架,给我们提供了非常大的便利,他们应该是android网络处理部分开源框架的前三名。
1.https://github.com/loopj/android-async-http
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();
对于小项目,这种网络框架简直就是一种幸福的选择。
3.https://github.com/square/okhttp
相比于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开发人员一样可以在浏览器中查看手机访问网络的实时信息,查看提交和返回结果,大大的方便了开发,这个工具的使用将会专门写一篇博客来进行讲解。
相关文章推荐
- 10月第3周网络安全报告:境内被篡改网站升至4202个
- javascript中XMLHttpRequest对象
- myEclipse TCP/IP monitor 效能说明
- Android网络框架Volley
- TCP协议三次握手过程分析
- 初入android驱动开发之网络设备以太网(一)
- android主线程访问网络的方法
- REST
- 关于网络抓取连接释放不了报错的解决办法
- 分类算法之贝叶斯网络--转自 T2噬菌体
- 图解TCP/udp及socket
- python模块介绍-httplib:HTTP协议客户端和HTTPS协议客户端
- 网络SSID是什么意思
- 1.http://www.cnblogs.com/wsq724439564/p/3301943.html
- eclipse配置tomcat,访问http://localhost:8080出现404错误
- KVM虚拟化网络优化技术总结
- android重新学_网络3——采用HttpURLConnection提交数据到服务器
- Android在网络上分析获取图片(支持bmp格式)
- Wireshark学习笔记——如何快速抓取HTTP数据包
- wireshark 抓包分析 TCPIP协议的握手