我正在尝试学习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。