recherche

Maison  >  Questions et réponses  >  le corps du texte

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 Il y a quelques jours677

répondre à tous(4)je répondrai

  • PHPz

    PHPz2017-04-18 09:08:57

    J'ai également rencontré ce problème, c'est-à-dire que lorsqu'une erreur se produit, l'objet n'est pas renvoyé, mais une chaîne est renvoyée, et elle ne peut alors pas être analysée. Actuellement, elle affiche uniquement un message d'erreur codé en dur, ou. utilise directement l'analyse de chaînes. Je ne sais pas s'il existe un moyen de le résoudre<🎜 >

    répondre
    0
  • ringa_lee

    ringa_lee2017-04-18 09:08:57

    Vous pouvez certainement l'obtenir en renvoyant String. Postez le code source. Comment l'avez-vous écrit ?

    répondre
    0
  • 大家讲道理

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

    Si quelque chose ne va pas, gérez-le dans onError

    répondre
    0
  • 天蓬老师

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

    Le paramètre transmis à getDemoData dans la première méthode doit être écrit de manière incorrecte. Il doit être Subscriber<DemoService>

    répondre
    0
  • Annulerrépondre