当前在我的应用程序中使用改造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类文件。 找到
答案 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" />
如果您对将RXJava
与Retrofit
结合使用感兴趣,可以查看此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
);