使用Retrofit v2.0.0-beta1

时间:2015-09-01 16:37:06

标签: android json gson retrofit

我目前正在升级到Retrofit v.2.0.0-beta1并在the docs中说:

  

默认情况下,Retrofit只能将HTTP正文反序列化为OkHttp的ResponseBody类型,并且只能接受@Body的RequestBody类型。

     

可以添加转换器以支持其他类型。为了您的方便,六个兄弟模块适应流行的序列化库。

如何添加GSON转换器而不是RequestBody我收到GSON.JsonObjectGSON.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);

1 个答案:

答案 0 :(得分:4)

自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