2017-04-14 97 views
0

我正在关注Github Link以使用ReteroFit和RxJava来使用API​​,但在接口类中将Call从Call更改为Observer时,我收到一条错误消息。无法使用RxJava和Reterofit2创建EndPoint

类型 'java.util.Observable中' 不列入有类型参数

ApiClient:

public class ApiClient { 
    public static final String BASE_URL = "*********"; 
    private static Retrofit retrofit = null; 
    public static Retrofit getClient() { 
     final OkHttpClient okHttpClient = new OkHttpClient.Builder() 
       .readTimeout(60, TimeUnit.SECONDS) 
       .connectTimeout(60, TimeUnit.SECONDS) 
       .build(); 
     if (retrofit==null) { 
      Gson gson = new GsonBuilder() 
        .setLenient() 
        .create(); 
      retrofit = new Retrofit.Builder() 
        .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) 
        .baseUrl(BASE_URL) 
        .client(okHttpClient) 
        .addConverterFactory(GsonConverterFactory.create(gson)) 
        .build(); 
     } 
     return retrofit; 
    } 


} 

ApiInterface

public interface ApiInterface { 
    @FormUrlEncoded 
    @POST("user/get_user") 
    Observable<UserResponse> getUsers(@Field("email") String email, @Field("password") String password); 

} 

UserResponse:

public class UserResponse { 

    private List<User> result; 
    private String status_message; 
    private int status_code; 

    public int getStatus_code() { 
     return status_code; 
    } 

    public void setStatus_code(int status_code) { 
     this.status_code = status_code; 
    } 

    public List<User> getResult() { 
     return result; 
    } 

    public void setResult(List<User> result) { 
     this.result = result; 
    } 

    public String getStatus_message() { 
     return status_message; 
    } 

    public void setStatus_message(String status_message) { 
     this.status_message = status_message; 
    } 
} 

依赖关系:

compile 'io.reactivex.rxjava2:rxjava:2.0.1' 
    compile 'io.reactivex.rxjava2:rxandroid:2.0.1' 
    compile 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0' 

回答

0

您使用了错误的可观察类:

类型 'Ĵava.util .Observable'

代替使用rx java Obserable

2

变化import java.util.Observable;在代码import io.reactivex.Observable;

1

像以前的答案说,错了,进口解决这个问题,删除导入,然后alt + enter导入新的。

记录拦截器,用于未来的记录。

HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); 
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); 
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build(); 
+0

确保将鼠标悬停在可观察点上以导入 – Remario

+0

也我建议使用改进日志拦截器来记录网络请求 – Remario