当 是Javabean 时就能得到回调.
之前提问匆忙没有贴代码,好多人要是没遇上还真不知道我在说啥.
代码片段如下:
public void getDemoData(Subscriber<String> subscriber){
HttpService.getInstance()
.create(DemoService.class)
.getDemoPicture("params1",params2,params3,"params4")
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(subscriber);
private void requestData() {
HttpMethods.getInstance().getDemoData(new Subscriber<String>() {
@Override
public void onCompleted() {
Toast.makeText(MainActivity.this, "ok", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Throwable e) {
showToast(getResources().getString(R.string.error_data));
}
@Override
public void onNext(String str) {
//....
}
}
});
}
private HttpService() {
OkHttpClient.Builder httpClientBuilder = new OkHttpClient.Builder();
httpClientBuilder.connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS);
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
httpClientBuilder.addInterceptor(interceptor).build();
retrofit = new Retrofit.Builder()
.client(httpClientBuilder.build())
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.baseUrl(BingUrl.BING)
.build();
}
HttpLoggingInterceptor 能打印出请求成功状态和返回的数据,只是回调都没走
私もこの問題に遭遇しました。つまり、エラーが発生した場合、オブジェクトは返されず、文字列が返され、解析できないのです。現時点では、ハードコードされたエラー メッセージが表示されるだけです。文字列解析を直接使用していますが、それを解決する方法があるかどうかはわかりません
String を返すことで確実に取得できます。ソースコードをどのように書いたかを教えてください。
何か問題が発生した場合は、onError で処理します
最初のメソッドで getDemoData に渡されるパラメーターは、Subscriber
サブスクライバーである必要があります。DemoService
サブスクライバーString
ではなく、Subscriber