C_J_X 2016-06-22 03:26 采纳率: 0%
浏览 1729

retrofit2+rxjava报错,接口使用call可以正常获取天气数据???

 接口:
 @GET("adat/cityinfo/{flag}")
    Observable<Weather> getWeather(@Path("flag") String flag);

 请求代码:
 retrofit_weather = new Retrofit.Builder()
                            .baseUrl(WEATHERIP)
                            .addConverterFactory(GsonConverterFactory.create())
                            .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                            .build();
                    InfoService serverse = retrofit_weather.create(InfoService.class);
                    serverse.getWeather("101190404.html")
                            .subscribeOn(Schedulers.io())
                            .observeOn(AndroidSchedulers.mainThread())
                            .subscribe(new Subscriber<Weather>() {
                                @Override
                                public void onCompleted() {

                                }

                                @Override
                                public void onError(Throwable e) {

                                }

                                @Override
                                public void onNext(Weather weather) {
                                    text2.setText(weather.getWeatherinfo().getWeather());
                                }
                            });

报错:
图片说明

  • 写回答

4条回答 默认 最新

  • C_J_X 2016-06-22 03:31
    关注
    接口:
         @GET("adat/cityinfo/{flag}")
        Observable<Weather> getWeather(@Path("flag") String flag);
    
        @GET("adat/cityinfo/{flag}")
        Call<Weather> get(@Path("flag") String flag);
    
            实现:
                                            //第二种
                        retrofit_weather = new Retrofit.Builder()
                                .baseUrl(WEATHERIP)
                                .addConverterFactory(GsonConverterFactory.create())
                                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                                .build();
                        InfoService serverse = retrofit_weather.create(InfoService.class);
    
                        serverse.getWeather("101190404.html")
                                .subscribeOn(Schedulers.io())
                                .observeOn(AndroidSchedulers.mainThread())
                                .subscribe(new Subscriber<Weather>() {
                                    @Override
                                    public void onCompleted() {
    
                                    }
    
                                    @Override
                                    public void onError(Throwable e) {
    
                                    }
    
                                    @Override
                                    public void onNext(Weather weather) {
                                        text2.setText(weather.getWeatherinfo().getWeather());
                                    }
                                });
    
                        //第三种
                        retrofit2 = new Retrofit.Builder()
                                .baseUrl(WEATHERIP)
                                .addConverterFactory(GsonConverterFactory.create())
                                .build();
    
                        InfoService infoService2 = retrofit2.create(InfoService.class);
                        Call<Weather> call2 = infoService2.get("101190404.html");
                        call2.enqueue(new Callback<Weather>() {
                            @Override
                            public void onResponse(Call<Weather> call, Response<Weather> response) {
                                Weather weather = response.body();
                                text3.setText(weather.getWeatherinfo().getCity());
                            }
    
                            @Override
                            public void onFailure(Call<Weather> call, Throwable t) {
                                text3.setText(t.getMessage());
                            }
                        });
                    }
                });
    

    第三种可以正常获取,第二种不行

    评论

报告相同问题?