改造2类文件问题

时间:2019-02-28 06:18:13

标签: java android retrofit2 rx-java2

当前在我的应用程序中使用改造2时遇到问题。

public static Retrofit getClient(Context context)
{

    if (okHttpClient == null)
        initOkHttp(context);

    if (retrofit == null)
    {
        retrofit = new Retrofit.Builder()
                .baseUrl(CaselotREST.CASELOT_BASEURL)
                .client(okHttpClient)
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .build();
    }
    return retrofit;
}

尝试编译项目时出现以下错误。

  

错误:无法访问Retrofit2的Retrofit类文件。   找到

4 个答案:

答案 0 :(得分:2)

我知道了。问题源于我们的android应用程序中代码库的模块化。我的Android应用程序中有很多模块,每个模块都有依赖关系。改装的依赖项,其中Webapi模块但不在主应用程序模块中。解决此问题的方法是将以下内容添加到主要gradle文件

implementation 'com.squareup.retrofit2:converter-gson:2.2.0'
implementation 'com.squareup.retrofit2:retrofit:2.2.0'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.2.0'

答案 1 :(得分:1)

确保已在项目的build.gradle文件中添加了改造依赖项。

implementation 'com.squareup.retrofit2:retrofit:2.5.0'

答案 2 :(得分:0)

如果您以前使用过Retrofit 1.x,现在又继续使用Retrofit 2,则可以在gradle文件中添加此行

implementation 'com.squareup.retrofit2:retrofit:2.5.0'

还要确保您对AndroidManifest文件具有所需的权限

  <uses-permission android:name="android.permission.INTERNET" />

如果您对将RXJavaRetrofit结合使用感兴趣,可以查看此link的教程。

    //example 
    Gson gson = new GsonBuilder()
            .setLenient()
            .create();

    Retrofit build = new Retrofit.Builder()
            .baseUrl(BuildConfig.BASE_URL)
            .addConverterFactory(GsonConverterFactory.create(gson))
            .client(unsafeOkHttpClient)
            .build();

如果这对您有所帮助,请加油。

答案 3 :(得分:0)

如果将RxJava2与改造一起使用,则需要这样的东西。 添加gson和Retrofit的依赖项,如果您在Retrofit api服务中使用可观察到的rxjava,则适配器会导入某些东西。

/* retrofit, gson */
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.8.1'
implementation 'com.squareup.retrofit2:converter-scalars:2.4.0'

然后您的构建器将如下所示:

 Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(Constants.BASE_API_URL)
            .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
            .addConverterFactory(GsonConverterFactory.create())
            .client(okHttpClient)
            .build();

在哪里

okHttpClient = new OkHttpClient.Builder().build();

然后您可以创建服务

retrofit.create(RetrofitAPIService.class);

您的RetrofitAPIService将在其中保存类似于以下内容的API实现:

@Headers("Content-Type: application/json")
@POST("v1/login/")
Observable<ApiResponse> userLogin(
        @Body String body
);