我正在尝试学习Reformat+RxJava是如何工作的,我正在测试一些示例。若我调用一个对象列表,我可以在控制台上打印这个对象列表。下面是代码:
Disposable disposable = apiInterface.getArea("4744", ".")
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribeWith(new DisposableObserver<List<Area>>() {
@Override
public void onNext(List<Area> areas) {
Log.d("Response"," Value Area "+areas);
}
@Override
public void onError(Throwable e) {
Log.d("Error","JSON Error "+ e.getMessage());
}
@Override
public void onComplete() {
}
}
);
型号类别:
public class Area {
@SerializedName("v_area")
private String typeArea;
@SerializedName("area")
private String desArea;
public Area(String typeArea, String desArea) {
this.typeArea = typeArea;
this.desArea = desArea;
}
public String getTypeArea() {
return typeArea;
}
public void setTypeArea(String typeArea) {
this.typeArea = typeArea;
}
public String getDesArea() {
return desArea;
}
public void setDesArea(String desArea) {
this.desArea = desArea;
}
}
然而,如果我尝试接收一个对象列表并使用RxJava运算符转换为字符串列表,则会出现错误:“D/OkHttp:<;--HTTP FAILED:android.os.NetworkOnMainThreadException”
Disposable disposable = apiInterface.getArea("4744",".")
.map(response -> Observable.fromIterable(response))
.flatMap(x->x)
.map(Area::getTypeArea)
.toList()
.toObservable()
.subscribe(this::handlerResponse,this::handlerError);
}
private void handlerResponse(List<String> strings) {
System.out.println(strings);
}
private void handlerError(Throwable throwable) {
Log.d("Error ","Response Error "+throwable.getMessage());
}
有人能帮我解决吗?请再问一个问题。。。我能举个例子来捕捉响应错误吗?因为我没有收到任何http状态错误,但控制台上只有一个null。