我目前正在升级到Retrofit v.2.0.0-beta1,在医生们中它说:
默认情况下,Retrofit只能将HTTP反序列化为OkHttp的ResponseBody类型,并且它只能接受@Body的RequestBody类型。 可以添加转换器以支持其他类型。六个同级模块适应流行的序列化库,为您提供方便。
我如何确切地添加GSON转换器,而不是RequestBody,而是接收GSON.JsonObject或GSON.JsonArray来响应Content-type: application/json
我的初始化代码如下所示:
OkHttpClient client = new OkHttpClient();
client.interceptors().add(new AuthInterceptor(authState));
client.interceptors().add(new LoggingInterceptor());
restClient = new Retrofit.Builder()
.client(client)
.baseUrl(BASE_URL)
.build()
.create(RestClient.class);发布于 2015-09-01 17:35:04
由于Retrofit2,它不会附带默认的转换器,因此您需要显式地添加转换器。
你可以这样加。
Retrofit retrofit = new Retrofit.Builder()
.client(client)
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();并且您可以通过以下任何一种方法获得映射对象
Call<MyObject> call = myService.callMyService();
Response<MyObject> response = call.execute();
MyObject mappedObj = response.body();或
Call<MyObject> call = myService.callMyService();
call.enqueue(new Callback<MyObject>() {
@Override void onResponse(Response response) {
MyObject mappedObj = response.body();
}
@Override void failure(Throwable throwable) {}
});还添加依赖项compile 'com.squareup.retrofit:converter-gson:2.0.0-beta1'
参考资料:https://speakerdeck.com/jakewharton/simple-http-with-retrofit-2-droidcon-nyc-2015
https://stackoverflow.com/questions/32336785
复制相似问题