接口:
@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