在实际开发项目中,服务器经常会用空字符串 “” 作为返回结果表示空值 ,但这在Gson当中就会遇到问题,如果这项数据的类型不是字符串,Gson解析就会报错
我们希望程序可以自动将空字符串解析为对应类型的空值,比如整型就解析为0,List型就解析为一个Empty List这个问题可以说是我用Retrofit+Gson以来最大的一个坑,以至于我在研究时差不多都要把源码看完了
提一件离奇的事是,G...
分类:
其他好文 时间:
2016-06-03 19:31:28
阅读次数:
803
异常处理Retrofit本身会抛出HttpException,Gson解析会抛出解析异常,
此外我们还应该处理与服务器约定好的“异常”,即上一篇提到的返回数据中result字段值不会0的情况这里要先解决一个问题,就是Gson构建的对象,通过注解定义key名,以变量的类型定value的类型,
但如果同样的key在不同情况下属于不同的数据类型,就会出问题。 假如服务器返回格式是{
"re...
分类:
其他好文 时间:
2016-06-03 19:25:13
阅读次数:
863
Android 开发中,从原生的 HttpUrlConnection 到经典的 Apache 的 HttpClient,再到对前面这些网络基础框架的封装,比如 Volley、Async Http Client,Http 相关开源框架的选择还是很多的,其中由著名的 Square 公司开源的 Retrofit 更是以其简易的接口配置、强大的扩展支持、优雅的代码结构受到大家的追捧。...
分类:
其他好文 时间:
2016-06-03 19:24:29
阅读次数:
745
在使用Retrofit时,有时候需要设置Set-Cookie等请求头,如果每一个url都需要,那么直接来个拦截器就好了。如下图所示:注意Header头,不要照抄,要灵活运用。让所有网络请求都附上你的 token:Interceptor mTokenInterceptor = new Interceptor() {
@Override public Response intercept(Cha...
分类:
移动开发 时间:
2016-06-03 19:15:16
阅读次数:
5089
业务需求当我们在app里发起网络请求时,可能会因为各种问题导致失败。如何利用RxJava来实现出现错误后重试若干次,并且可以设定重试的时间间隔。具体实现网络请求使用Retrofit来做,还是使用上篇博客中的请求用户信息接口 @GET("/userinfo?noToken=1")
Observable getUserInfoNoToken();下面是请求用户信息接口...
分类:
编程语言 时间:
2016-06-02 14:53:38
阅读次数:
692
本文将顺着构建请求对象→构建请求接口→发起同步/异步请求的流程,分析retrofit2是如何实现的。 组成部分 Retrofit2源码主要分为以下几个部分: retrofit retrofit-adapters retrofit-converters 本篇先分析retrofit部分,也就是retro ...
分类:
其他好文 时间:
2016-05-31 13:47:09
阅读次数:
192
在使用Retrofit来作为网络请求库之后,笔者查阅了网上的有关教程,无外乎都是请求json数据,使用addConverterFactory(GsonConverterFactory.create())来作为转化器,如果业务需求是请求 字符串,而不是json数据格式呢,继续使用这个转换器就会产生错误。好,来到正题,如何使用Retrofit请求一段字符串:
来到官方文档查阅:http://squa...
分类:
移动开发 时间:
2016-05-30 15:27:42
阅读次数:
252
如果在使用的过程中,不需要Gson以及其他转换器,只是单纯的返回 JSONObject,那这样怎么处理呢?
通过阅读源码发现,可以通过自定义转换器的方式操作:import retrofit.Call
/*Retrofit 2.0*/public interfase ApiService{
@POST("/list")
Call loadRepo();
}同步操...
分类:
移动开发 时间:
2016-05-30 15:26:42
阅读次数:
246
Retrofit 作为简化 HTTP 请求的库,已经运行多年,2.0版本依然不辱使命的在做这些事情。不过 2.0 版本修复了一些长期影响开发者的设计,还加入了前所未有的强大特性。在 NYC 2015 的这一个分享中,Jake Wharton 的演讲涵盖了所有 Retrofit 2.0 的新特性,全面介绍了 Retrofit 2.0 工作原理。Transcription below provided...
分类:
Web程序 时间:
2016-05-30 15:26:00
阅读次数:
409
参照文档:http://gank.io/post/56e80c2c677659311bed9841 一、创建Retrofit mRetrofit = new Retrofit.Builder() .baseUrl(URL_PATH)//设置URL地址 .addConverterFactory(Gso ...
分类:
其他好文 时间:
2016-05-29 18:26:59
阅读次数:
186