Retrofit 2 示例教程但 GsonConverterFactory 显示错误“无法解析符号”

问题描述 投票:0回答:9

我正在尝试遵循Retrofit的2教程,但是在这部分代码中有一个

GsonConverterFactory
显示错误
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);
    }
}

之前我在我的 gradle.build 中添加了,我不确定是否应该添加 GSON,因为他们说 Retrofit 1.9 有它,但没有提到关于 Retrofit 2:

dependencies {  
    // Retrofit & OkHttp
    compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'
}
android gson retrofit android-library okhttp
9个回答
92
投票

编辑

改造 2 现已稳定。使用

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

在您的

build.gradle
依赖项部分

旧答案

使用 Retrofit 2.0,您必须在 build.gradle 中声明您要使用的转换工厂。添加

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

到您的 gradle 并再次同步


11
投票

来自该网站上的另一篇文章

Retrofit 2 默认情况下不附带 Gson。 以前,您无需担心任何集成转换器,并且可以开箱即用地使用 Gson。此库更改会影响您的应用程序,您还需要将转换器作为同级包导入。我们稍后将在本文中介绍转换器,并向您展示如何为您的应用程序配置 Gson 或任何其他响应转换器。

因此,将其添加到您的

build.gradle



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

5
投票
新版本现已推出

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

4
投票
在我的例子中,这种行为的原因是

build.gradle

 依赖性中的拼写错误。
beta4
 发布后,我更新自:

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


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

正确的依赖是


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

另外值得注意的是,
beta4 - 改造不适用于 beta2 - gson


4
投票
使用新版本更新改造库

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

您必须包含以下依赖项:

compile 'com.squareup.retrofit2:converter-gson:2.0.2'
    

3
投票
我用过

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);

和依赖项:

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
    

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'

用这个


0
投票
由于 gson 默认情况下不适用于 Retrofit,因此请同时使用 Retrofit 和转换器-gson 依赖项:

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

这里找到最新版本的retrofit和gson转换器在这里


0
投票
您没有实现 GsonConverterFactory 。 GsonConverterFactory 用于将来自服务器的 JSON 响应转换为 Kotlin 或 Java 对象。

implementation("com.squareup.retrofit2:retrofit:2.9.0") implementation("com.squareup.retrofit2:converter-gson:2.9.0")
请将此依赖项添加到您的 build.gradle(app) 中。

© www.soinside.com 2019 - 2024. All rights reserved.