繁体   English   中英

无法解析方法订阅Retrofit Rxjava android

[英]Cannot Resolve method Subscribe Retrofit Rxjava android

在我的应用程序中,我试图使用Retrofit 2RxJava2从我的网络服务器获取数据。 但是当我订阅我的API接口方法时,我得到错误

Cannot Resolve method 'subscribe(anonymous org.reactivestreams.Subscriber<*Model Name*>

API客户端:

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

方法内部活动:

/*Test Login */
private void loginUser(){
        ApiInterface apiInterface = ApiClient.getClient().create(ApiInterface.class);
        getUsers = apiInterface.getUsers("xyz@gmail.com","12345678");
        getUsers.subscribeOn(Schedulers.io()).
                observeOn(AndroidSchedulers.mainThread()).
                subscribe(new Subscriber<UserResponse>(){

                    @Override
                    public void onSubscribe(Subscription s) {

                    }

                    @Override
                    public void onNext(UserResponse userResponse) {

                    }

                    @Override
                    public void onError(Throwable t) {

                    }

                    @Override
                    public void onComplete() {

                    }
                });
    }

Subscriber用于订阅Flowable

相反,对于Observable ,您可以使用Observer

.subscribe(new Observer<Void>() {
   @Override
   public void onSubscribe(Disposable d) {}

   @Override
   public void onNext(Void orderValues) {}

   @Override
   public void onError(Throwable e) {}

  @Override
  public void onComplete() {}
});

您不能在V2中使用Subscriber和Observable。 请改用新的观察者<>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM