android – 为所有Web服务调用处理响应和错误的Generalize方法

android – 为所有Web服务调用处理响应和错误的Generalize方法,第1张

概述我正在尝试创建generlize方法来处理以下内容 >来自webservice的回复 >处理HTTP错误和自定义错误 因为我已经编写了以下代码和crated回调来处理响应ResponseCallback和错误ErrorCallback. 要获取与营养或任何其他对象相关的数据,我可以使用相同的回调. Request request = new Request(); request.setAc 我正在尝试创建generlize方法来处理以下内容

>来自webservice的回复
>处理http错误和自定义错误

因为我已经编写了以下代码和crated回调来处理响应ResponseCallback和错误ErrorCallback.

要获取与营养或任何其他对象相关的数据,我可以使用相同的回调.

Request request = new Request();    request.setAccess_token("d80fa6bd6f78cc704104d61146c599bc94b82ca225349ee68762fc6c70d2dcf0");    request.setStart_date("2018-06-01T00:00:00");    Flowable<Response> fitnessFlowable = new WebRequest()            .getRemoteClIEnt()            .create(fitnessAPI.class)            .getfitnessData("5b238abb4d3590001d9b94a8",request.toMap());      fitnessFlowable.subscribeOn(Schedulers.io())            .takeuntil(response->response.getSummary().getNext()!=null)            .doOnNext(new ResponseCallback())            .doOnError(new ErrorCallback<Throwable>())            .subscribe();

响应回调

public  class ResponseCallback<T extends Response> implements Consumer<Response> {    @OverrIDe    public voID accept(Response response) throws Exception {        if(response ==null || response.getfitness() == null || response.getfitness().isEmpty()) {            new Exception("Null response");        }        RxBus.getInstance().send(response.getfitness());       Log.e("Data","accept");        try(Realm r = Realm.getDefaultInstance()) {            r.executeTransaction((realm) -> {                realm.copyToRealmOrUpdate(response.getfitness());            });        }    }}

错误回调

public class ErrorCallback <T extends Throwable> implements Consumer<Throwable> {    public static final String TAG = "ErrorCallback";    @OverrIDe    public voID accept(Throwable e) throws Exception {        if (e instanceof httpException) {            ResponseBody body = ((httpException) e).response().errorBody();            try {                Response response=  LoganSquare.parse(body.byteStream(),Response.class);                if(response.getErrors() !=null)                    if(response.getErrors().size() > 0)                      Log.e(TAG,response.getErrors().get(0).getErrors() );            } catch (IOException t) {                t.printstacktrace();            }        } else if (e instanceof SocketTimeoutException) {            Log.e(TAG,e.getMessage() );        }else if (e instanceof IOException) {            Log.e(TAG,e.getMessage() );        }else{            Log.e(TAG,e.getMessage() );        }    }}

这里有两个问题我想解决

>要处理响应和错误,我需要进行两次单独的回调.有没有其他方法可以处理回调中的响应和错误,而不是创建两个单独的
>我什么时候应该在上面的代码中处理订阅,因为你可以在我的代码中看到我的订阅是hagging.

我已经将this link用于设计推广方法.

解决方法 解决问题#1 –

To handle response and error i need to make two separate callbacks. is
there any other way where i can handle response and error in callback
rather than creating two separate one

在Clean Architecture方法中,您的Web服务将被定义为RemoteDataSource(可能遵循’DataSource’协议.RemoteDataSource应该以类格式序列化它的结果 – 如果您能够使用Kotlin,那么sealed class是一个很好的选择在这里(如果Kotlin不是一个选项 – 总结

以上是内存溢出为你收集整理的android – 为所有Web服务调用处理响应和错误的Generalize方法全部内容,希望文章能够帮你解决android – 为所有Web服务调用处理响应和错误的Generalize方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1126205.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存