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());
                                }
                            });

报错:
图片说明

接口:
     @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());
                        }
                    });
                }
            });

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

主线程中貌似不允许请求网络

我也遇到了 ,将依赖的Retrofit的版本降级第二种就可以,

compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4' ,

:retrofit:2.1 版本就会遇到,具体原因我还在探究中,楼主找到好的方案没有?

已经解决 http://blog.csdn.net/blueamertj/article/details/51811195