43

I'm trying to follow Retrofit's 2 tutorial, but on this part of the code there is a GsonConverterFactory that displays error Cannot resolve symbol:

public class ServiceGenerator {

    public static final String API_BASE_URL = "http://your.api-base.url";

    private static OkHttpClient httpClient = new OkHttpClient();
    private static Retrofit.Builder builder =
            new Retrofit.Builder()
                    .baseUrl(API_BASE_URL)
                    //THIS IS THE LINE WITH ERROR!!!!!!!!!!!!
                    .addConverterFactory(GsonConverterFactory.create());

    public static <S> S createService(Class<S> serviceClass) {
        Retrofit retrofit = builder.client(httpClient).build();
        return retrofit.create(serviceClass);
    }
}

Previously I added in my gradle.build, I'm not sure if I should add GSON since they say Retrofit 1.9 has it but nothing is mentioned about Retrofit 2:

dependencies {  
    // Retrofit & OkHttp
    compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'
}
StackOverflower
  • 480
  • 1
  • 4
  • 9

8 Answers8

91

EDIT

retrofit 2 is now stable. Use

compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'

in your build.gradle dependency section

old answer

with Retrofit 2.0 you have to declare in your build.gradle the convert factory you want to use. Add

compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'

to your gradle and sync it again

Community
  • 1
  • 1
Blackbelt
  • 156,034
  • 29
  • 297
  • 305
11

From another article on that site

Retrofit 2 doesn’t ship with Gson by default. Before, you didn’t need to worry about any integrated converter and you could use Gson out of the box. This library change affects your app and you need to import a converter as a sibling package as well. We’ll touch the converter later within this post and show you how to config the Gson or any other response converter for your app.

Thus, add this to your build.gradle

dependencies {  
    compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'
}
Andrew Brooke
  • 12,073
  • 8
  • 39
  • 55
5

New version is now available

compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
Deny
  • 51
  • 1
  • 2
4

The reason to such behavior in my case was typo in build.gradle dependency. After beta4 release I've updated from:

compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'

to

 compile 'com.squareup.retrofit:converter-gson:2.0.0-beta4'

and the right dependency was

compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'


Also worth notice, that beta4 - retrofit won't work with beta2 - gson!

Nikita Barishok
  • 1,312
  • 1
  • 12
  • 15
4

As Updated Retrofit Library with New Version

With

compile 'com.squareup.retrofit2:retrofit:2.0.2'

You must have to include dependency of:

compile 'com.squareup.retrofit2:converter-gson:2.0.2'
Pratik Butani
  • 60,504
  • 58
  • 273
  • 437
3

I have used

RestService restService=new Retrofit.Builder()
                    .baseUrl(Constants.Base_URl)
                    .addConverterFactory(GsonConverterFactory.create())
                    .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                    .client(new OkHttpClient.Builder().readTimeout(60, TimeUnit.SECONDS).connectTimeout(60, TimeUnit.SECONDS).build())
                    .build().create(RestService.class);

And dependencies:

        compile 'com.squareup.retrofit2:retrofit:2.1.0'
        compile 'com.squareup.retrofit2:converter-gson:2.1.0'
        // RxJava adapter for retrofit
        compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
        // RxJava libraries
        compile 'io.reactivex:rxjava:1.0.10'
        compile 'io.reactivex:rxandroid:1.1.0'

use retrofit and gson of the same version code
Boken
  • 4,825
  • 10
  • 32
  • 42
Nilesh
  • 1,013
  • 14
  • 21
2
compile 'com.google.code.gson:gson:2.6.2'
compile 'com.squareup.retrofit2:retrofit:2.0.2'
compile 'com.squareup.retrofit2:converter-gson:2.0.2'

use this

Keshav Gera
  • 10,807
  • 1
  • 75
  • 53
0

As gson is by-default not available with retrofit, use both retrofit and converter-gson dependencies as:

def retrofitVersion = "2.9.0"
implementation "com.squareup.retrofit2:retrofit:$retrofitVersion"
implementation "com.squareup.retrofit2:converter-gson:$retrofitVersion"

You can find the latest version of retrofit here and gson converter here