Android项目实战(五十六):获取WebView加载的url的请求错误码
程序员文章站
2022-10-08 21:27:37
例如需求,我有一个WebView 加载一个url, 该url对应的网页本身自带下拉刷新 ,但是网页本身会有出现400 500 等异常请求错误码 这时候网页加载失败,页面本身的下拉是无法使用的,要求重新加载页面的话就需要在webview外层套一个android下拉控件(SwipeRefreshLayo ......
例如需求,我有一个webview 加载一个url, 该url对应的网页本身自带下拉刷新 ,但是网页本身会有出现400 500 等异常请求错误码
这时候网页加载失败,页面本身的下拉是无法使用的,要求重新加载页面的话就需要在webview外层套一个android下拉控件(swiperefreshlayout)
这样导致下拉一定用的swiperefreshlayout的下拉
最终要求是如果页面加载成功的话,用页面本身的下拉,如果页面加载失败的话,用android下拉控件的下拉
--------------------------------------------------------------------------------------------------------------------------------------------
解决办法就是监听加载的url的请求的错误码,对swiperefreshlayout.setenabled() 来控制是否允许下拉刷新
监听对应6.0+ 6.0以下 分别为两种实现方式:
一、android 6.0+ 判断请求码
mwebview.setwebviewclient(new webviewclient() { // ..... @override public void onreceivedhttperror(webview view, webresourcerequest request, webresourceresponse errorresponse) { super.onreceivedhttperror(view, request, errorresponse); if (build.version.sdk_int >= build.version_codes.m) { if (errorresponse.getstatuscode() == 500 ){ refresh.setenabled(true); // 放开下拉 } logutils.i(tag, "onreceivedhttperror:"+ errorresponse.getstatuscode()); } } });
二、android 6.0以下 判断请求码
mwebview.setwebchromeclient(new webchromeclient() { // ..... @override public void onreceivedtitle(webview view, string title) { super.onreceivedtitle(view, title); if (build.version.sdk_int < build.version_codes.m) { if (title.contains("500")) { refresh.setenabled(true); } } } });