关于webView拦截H5网络请求数据,替换本地数据问题

来源:互联网 发布:php常用全局变量 编辑:程序博客网 时间:2024/05/19 15:41
需求情景:
由于H5有个接口请求的数据很大,所以直接在本地缓存了该接口的json数据文本;
现在通过拦截H5该接口,直接实用本地缓存数据;方法如下
【重点需要关注的方法
 WebResourceResponse(String mimeType,String encoding,int statusCode,String reasonPhrase,Map<String,String> responseHeaders,InputStream data)
 @Override    public WebResourceResponse shouldInterceptRequest(WebView webView, WebResourceRequest request) {        Uri uri = request.getUrl();        String path = uri.getPath();//仅路径,不带参数        Log.d("cut","Request  uri拦截路径uri::"+uri);        if (uri.toString().contains("homead3.do")){//拦截到H5的网络请求            try {                String localTargetRes = FileUtils.INSTANCE.getSDPath()+Constant.LOCAL_FOLDER_ROOT_CONTENT_PATH + File.separator+ uri.getAuthority()+File.separator+"homead3.do";                Log.d("cut","Request  替换的数据文本::"+localTargetRes);                Map<String,String> map = new HashMap<>();                map.put("Access-Control-Allow-Origin","*");                map.put("Access-Control-Allow-Headers","Content-Type");                WebResourceResponse resourceResponse = new WebResourceResponse("application/javascript", "UTF-8",200,"",map,new FileInputStream(new File(localTargetRes)));                return resourceResponse;            } catch (Exception e) {                e.printStackTrace();                               return null;//异常情况,直接访问网络资源            }        }}


对于低版本api走的是

public WebResourceResponse shouldInterceptRequest(WebView webView, String url)这个方法的目前本人还没找到,有高手知道的麻烦告知一下,谢谢


0 0
原创粉丝点击