Object java.lang.ClassCastException:com.google.gson.internal.LinkedTreeMap不能强制转换为ClassName
我使用的Api使用改进和rxjava处理Api的两个响应。我正在创建响应模型和错误模型。 我不知道如何在一个Api中处理这两个响应,这里是我的实现Object java.lang.ClassCastException:com.google.gson.internal.LinkedTreeMap不能强制转换为ClassName,object,observable,retrofit,rx-java,rx-android,Object,Observable,Retrofit,Rx Java,Rx Android,我使用的Api使用改进和rxjava处理Api的两个响应。我正在创建响应模型和错误模型。 我不知道如何在一个Api中处理这两个响应,这里是我的实现 @POST("login/") Observable<Response<Object>> login(@Body LoginParamModel model); 我得到了这种类型的异常: W:io.reactivex.exceptions.UndeliverableException:无法将异常传递给使用者,因为它已取消/处
@POST("login/")
Observable<Response<Object>> login(@Body LoginParamModel model);
我得到了这种类型的异常:
W:io.reactivex.exceptions.UndeliverableException:无法将异常传递给使用者,因为它已取消/处置流,或者该异常无处可去。进一步阅读:'s-different-in-2.0#错误处理| java.lang.ClassCastException:com.google.gson.internal.LinkedTreeMap不能强制转换为com.model.login.LoginDataModel
W:原因:java.lang.ClassCastException:com.google.gson.internal.LinkedTreeMap无法强制转换为com.model.login.LoginDataModel
LoginDataModel是我的Api响应模型类,这里是RetroClientClass
public class RetroClient {
private static Retrofit retrofit = null;
private Context mContext;
public static Retrofit getClient(String BaseUrl) {
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.level(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient
.Builder()
.addInterceptor(new Interceptor() {
@NotNull
@Override
public Response intercept(@NotNull Chain chain) throws IOException {
String token = CommonUtill.ACCESS_TOKEN;
Request request = chain.request();
request = request.newBuilder()
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("Authorization", "Bearer " + token)
.addHeader("X-TOKEN-AUTHENTICATION", "True")
.build();
return chain.proceed(request);
}
})
.readTimeout(10, TimeUnit.SECONDS)
.connectTimeout(30, TimeUnit.SECONDS)
.addInterceptor(interceptor)
.build();
if (retrofit == null) {
retrofit = new Retrofit.Builder()
.baseUrl(BaseUrl)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(client)
.build();
}
return retrofit;
}
}请更改API接口
@POST("login/")
Observable<Response<LoginDataModel>> login(@Body LoginParamModel model);
@POST(“login/”)
可观察登录(@Body LoginParamModel model);
如何定义接口。您是否设置了RxJava适配器:?@akarnokd请检查更新的代码您是否尝试了可观察的?
public class RetroClient {
private static Retrofit retrofit = null;
private Context mContext;
public static Retrofit getClient(String BaseUrl) {
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.level(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient
.Builder()
.addInterceptor(new Interceptor() {
@NotNull
@Override
public Response intercept(@NotNull Chain chain) throws IOException {
String token = CommonUtill.ACCESS_TOKEN;
Request request = chain.request();
request = request.newBuilder()
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("Authorization", "Bearer " + token)
.addHeader("X-TOKEN-AUTHENTICATION", "True")
.build();
return chain.proceed(request);
}
})
.readTimeout(10, TimeUnit.SECONDS)
.connectTimeout(30, TimeUnit.SECONDS)
.addInterceptor(interceptor)
.build();
if (retrofit == null) {
retrofit = new Retrofit.Builder()
.baseUrl(BaseUrl)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(client)
.build();
}
return retrofit;
}
@POST("login/")
Observable<Response<LoginDataModel>> login(@Body LoginParamModel model);