2017-04-17 6 views
1

私のアプリケーションでは、Retrofit 2RxJava2を使用して私のWebサーバーからデータを取得しようとしています。メソッドを解決できません。更新Roxjava android

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モデル:

0123私は私のAPIインターフェイスメソッドに登録するとしかし、私はエラー

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

APIクライアントを取得しますアクティビティ内

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("[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() { 

        } 
       }); 
    } 
+0

きれいにプロジェクトをきれいにして再構築してください。 –

+0

クリーニングと再構築後に効果がありません –

+2

あなたが間違ったSubscriberクラスをインポートしたと思います –

答えて

9

SubscriberFlowableに加入するために使用されています。 Observableについては

、代わりに、あなたはObserverを使用することができます:あなたはV2で観察して加入者を使用することはできません

.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() {} 
}); 
+0

ご連絡ありがとうございます。 –

1

。 代わりに新しいオブザーバ<>を使用してください

+0

これは質問に対する答えを提供しません。十分な[評判](https://stackoverflow.com/help/whats-reputation)があれば、[投稿にコメントする]ことができます(https://stackoverflow.com/help/privileges/comment)。代わりに、[質問者からの明確化を必要としない回答を提供する](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- i-do-代わりに)。 - [レビューの投稿](/レビュー/低品質の投稿/ 18821407) –

関連する問題