Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot Resolve method Subscribe Retrofit Rxjava android

In my application I am trying to get data from my webserver using Retrofit 2 and RxJava2. But When I Subscribe to my API interface method I get Error

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

API CLIENT:

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 Model:

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

Method Inside Activity:

/*Test Login */
private void loginUser(){
        ApiInterface apiInterface = ApiClient.getClient().create(ApiInterface.class);
        getUsers = apiInterface.getUsers("[email protected]","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() {

                    }
                });
    }
like image 527
Mehvish Ali Avatar asked Jun 18 '26 05:06

Mehvish Ali


1 Answers

Subscriber is used for subscribing to aFlowable.

For Observable, instead, you can use 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() {}
});
like image 85
GVillani82 Avatar answered Jun 20 '26 18:06

GVillani82