Android网络开发框架Retrofit(一:介绍篇)
2016-01-04 22:28
549 查看
Android网络开发框架Retrofit(一:介绍篇)
Android的开发技术日新月异,变化之快使得开发者或喜或忧,有的开发者能及时跟着趋势走,使得自己开发起程序来,可以借鉴到很有国内网优秀的框架,效率得到了相当大的提升,也有一些开发者长期处于啃老本状态,很久不更新自己的技术,使得一旦出现一些新的技术,要花很长时间去琢磨,导致开发效率不进而退。因为技术之间也存在一定的关联性,所以在这建议广大开发者,在平常下班之余,可以多去网上了解了解一些比较前沿的开发技术,可能不会立刻使用得到,但等到真正使用得时候,再去看的话,就会大大的浪费时间,所以,我写的这篇博客,也是想将一些比较前沿的技术分享给大家,这是本人的第一篇博客,以后会陆陆续续分享一些我个人的开发经验,下面,就开始对今天的主题进行分享。
Retrofit是一款Java的网络请求框架,可以用于Java和Android,现用于Android非常适合,主要针对应用接口的请求,这个框架和以往常用的框架使用方法不太一样。
比如:android-async-http,他的使用方法是传入URL,将请求的结果通过回调的方式进行相应
AsyncHttpClient client = new AsyncHttpClient(); client.get("http://www.csdn.net/", new AsyncHttpResponseHandler() { @Override public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { } } @Override public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { String result = null; try { result = new String(responseBody, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } });
在onSuccess来处理最后成功返回的数据
还有volley 等等网络框架,请求的方法都和android-async-http相类似,都是配置请求地址和参数通过回调来处理结果
然而,今天的主人公Retrofit,请求数据的方式有点不同,哪里不同呢,有两点:
1、请求地址和参数的配置不同,在Retrofit中,它是这样配置的
//要写到一个接口里 @GET("/login.php") Call<<UserBean> login(@Query("id") int id, @Query("psw") String psw);
2、使用的方法不同,它直接调用上面定义好的一个接口方法,就可以获取出数据并转成实体类了
Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://www.csdn.net") .addConverterFactory(GsonConverterFactory.create()) .build(); Call<UserBean> call = apiService.login(123456,"woshimima"); Response<UserBean> response = call.execute(); UserBean userBean = response.body();
看到这里,可能有人觉得不太舒服了,好像这样代码好像很难看,并且请求回来的数据也很难调试
是的,因为我只是简单演示下这个使用过程,在实际使用中会对上面的代码进一步封装的,比如将
Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://www.csdn.net") .addConverterFactory(GsonConverterFactory.create()) .build();
放到一个公共管理类进行统一管理,亲们可以下载我给出的Demo来慢慢体验
大家是不是觉得,咦,这样写,不会阻塞吗,主线程一阻塞,就会挂掉了。是的,上面的这个代码是不可以放到主线程来执行的,要开启新线程来执行的,这个是一种,还有一种是可以和android-async-http使用类似的,也是通过回调的方式将数据回调回来,欲知详情,看Demo
那么,是不是又有了一个疑问,就是假如使用上面那样阻塞式来调用,又要我们写个线程代码,真的很累是不是,有这个疑问的同学,是非常好的
在这里我介绍出另一个很好用的框架,就是RxJava,Retrofit可以结合它来使用,通过RxJava来开启线程,然后让RxJava将数据返回到主线程,Retrofit框架结合RxJava使用起来才是真正好用,所以要想深入使用Retrofit的同学,就必须去学习下RxJava哦
今天的介绍到此结束了,接下来,我会对这个Retrofit框架的应用和源码进行讲解,谢谢大家
相关文章推荐
- Java写简单HTTP服务器
- TCP/IP详解学习笔记
- 使用https的原因
- 摘抄http://kb.cnblogs.com/page/531270/
- iOS网络编程:二、POST方式同步请求
- 在5.0 系统设置网络报 android.content.ActivityNotFoundException: No Activity found to handle Intent { act=and
- TCP与SOCKET的三次握手的对应关系
- iOS网络编程:一 、GET方式同步请求
- 【论文笔记】人脸检测窗口选择办法 NMS convnet
- TCP底层实现
- 网络爬虫、spider程序、网络蜘蛛
- TCP三次握手及释放
- 深度学习:卷积神经网络(convolution neural network)
- HTTP [TCP Retransmission] Continuation or non-HTTP traffic[Packet size limited during capture]
- 与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误
- Linux下基于Erlang的高并发TCP连接压力实验
- 计算机网络
- 网络字节序和本机字节序
- Http请求中的Content-Type
- TCP状态变迁图