搜尋

首頁  >  問答  >  主體

android - Retrofit Rxjava 在返回 String(不是Java bean)时没有走 rx 回调?

  1. 当 是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 能打印出请求成功状态和返回的数据,只是回调都没走

黄舟黄舟2772 天前676

全部回覆(4)我來回復

  • PHPz

    PHPz2017-04-18 09:08:57

    這個問題我也遇到了,就是出現錯誤的時候不返回對象,返回string,然後解析不了,目前只是提示寫死的錯誤信息,或者直接用string解析,不知道有什麼辦法可以解決

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-18 09:08:57

    返回String一定能得到,貼源碼啊,你怎麼寫的

    回覆
    0
  • 大家讲道理

    大家讲道理2017-04-18 09:08:57

    出錯了 就在onError裡處理呀

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-18 09:08:57

    第一個方法中getDemoData傳入的參數應該是寫錯了,應該是Subscriber<DemoService> subscriber,而不是Subscriber<String> subscriber

    回覆
    0
  • 取消回覆