今天讲Retrofit的配置,讲Converters,
Retrofit类是一个通过你的API接口传入一个回调对象来得到网络请求返回结果的。默认情况,Retrofit将提供默认的配置,但是,它也可以自定义配置。
转换器
默认,Retrofit仅能反序列化HTTP的body到OkHttp的ResponseBody类型中,并且只能接受@Body的RequestBody类型。
Converters转换器能增加支持其它类型。六种同族模块适配器,提供方便的序列化库。
- Gson: com.squareup.retrofit2:converter-gson
- Jackson: com.squareup.retrofit2:converter-jackson
- Moshi: com.squareup.retrofit2:converter-moshi
- Protobuf: com.squareup.retrofit2:converter-protobuf
- Wire: com.squareup.retrofit2:converter-wire
- Simple XML: com.squareup.retrofit2:converter-simplexml
- Scalars (primitives, boxed, and String): com.squareup.retrofit2:converter-scalars
下面是一个使用GsonConverterFactory类,通过使用Gson来反序列号,来生成一个GitHubService接口实现的例子。
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com")
.addConverterFactory(GsonConverterFactory.create())
.build();
GitHubService service = retrofit.create(GitHubService.class);
自定义转换器
如果你需要和一个使用内容格式化,并且Retrofit不支持这种格式的API通讯,比如YAML、txt、或其它自定义,或者你希望使用一个不同的库来实现一个存在的格式,你可以很容易地创建你自己的converter转换器。创建一个继承Converter.Factory类,并在创建你的适配器的时候传递这个类的一个实例,就可以了。