日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Android Webview的postUrl與loadUrl加載頁面實例

瀏覽:205日期:2022-09-25 14:25:13

關于Android的webview,用過的想必都不會陌生。這里我就不說webview的基本用法了,想要知道的可以去網上百多,有很多介紹webview基本用法的。

本文要介紹的主要是在項目過程中使用webview的postUrl遇到的坑。

1、使用場景如下:

webview在加載H5鏈接時,默認是使用loadUrl進行加載,如果你設置了緩存屬性(進行緩存),在顯示的H5頁面內點擊跳轉到另外一個頁面后,按回退鍵,可以正常的返回到上一個頁面,因為進行了緩存設置。但是如果使用postUrl進行加載,即使你設置的緩存屬性是進行設置,當你調轉到另外一個頁面后,按回退鍵,不會緩存之前的頁面,而是重新調用postUrl進行加載。這時問題就來了,同樣是進行加載,第一次的postUrl能夠正常加載,重新加載會加載失敗,沒有內容顯示。是不是很有意思,為什么會出現這樣的情況呢,通過抓包發現,雖然加載的是同樣一個鏈接,但是重新加載的請求屬性為空,導致加載失敗。

2、如何解決:

既然找到了原因,請求屬性為空,肯定是有解決辦法的,那就手動設置請求屬性,重新加載。如何手動設置,首先你肯定是要能夠拿到請求的所有內容和參數。用過webview的人相必都很熟悉它的setWebViewClient方法。該方法內部有shouldInterceptRequest方法能夠拿到請求的所有內容。不多說了,先上代碼。

public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { if(Build.VERSION.SDK_INT >= 21){ if(!request.getMethod().equalsIgnoreCase('post')){ return super.shouldInterceptRequest(view, request); } } DataOutputStream os = null; try { URL mUrl = new URL(url); HttpURLConnection connection = (HttpURLConnection) mUrl.openConnection(); connection.setDoInput(true); connection.setDoOutput(true); connection.setUseCaches(false); connection.setRequestMethod('POST'); if(Build.VERSION.SDK_INT >= 21){ Iterator headerKeys=request.getRequestHeaders().keySet().iterator(); while(headerKeys.hasNext()){ String key=headerKeys.next(); connection.setRequestProperty(key,request.getRequestHeaders().get(key)); } } connection.setRequestProperty('content-type','application/x-www-form-urlencoded'); os = new DataOutputStream(connection.getOutputStream()); os.write(EncodingUtils.getBytes(postData, 'BASE64')); os.flush(); return new WebResourceResponse('text/html', connection.getContentEncoding(), connection.getInputStream()); } catch (Exception e) { e.printStackTrace(); }finally { if(os!=null){ try { os.close(); } catch (IOException e) { e.printStackTrace(); } } } return super.shouldInterceptRequest(view, request); }});webView.postUrl(url, EncodingUtils.getBytes(postData, 'BASE64'));

該方法有個缺陷,只在Android 5.0.0以上的Api才有,5.0.0以下的Api是沒有此方法的,這也是一個坑,不能兼容所有機型。通過該方法中的setRequestProperty方法重新設置了請求屬性,然后使用postUrl進行重新加載,可以解決按回退鍵后頁面的重新恢復。注意,由于post加載是不能緩存的,因此在設置緩存屬性時一定要設置成重新加載屬性。

3、解決后出現的問題:

問題看似解決了,但是此方法會有坑。如果你仔細研究該方法,你會發現shouldInterceptRequest方法是在整個加載過中都調用了的。如果你進行抓包,你會發現,從開始加載鏈接到H5頁面中加載的每一個請求,該方法都會被調用,簡單的說就是有多少個請求,該方法就會調用多少次。如果你的頁面中還有一次post請求,那么問題就來了,你需要將第二次post請求的請求內容與第一次的進行對比,對比后選擇到底是加載第一次的頁面,還是加載第二次的頁面,否則就會默認加載第一次的post頁面。

4、結論

webview的H5頁面加載最好使用loadUrl方式,如果使用postUrl方式進行加載,你需要重寫整個setWebViewClient方法,當中會出很多坑,不建議這樣做。

以上這篇Android Webview的postUrl與loadUrl加載頁面實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品三级久久| 免费久久99精品国产| 日韩二区三区四区| 奇米777国产一区国产二区| 91精品国产自产精品男人的天堂 | 国产伦理久久久久久妇女| 亚洲婷婷丁香| 国产欧美久久一区二区三区| 国产精品日本一区二区三区在线| 欧美亚洲免费| 国产伊人久久| 激情久久久久久久| 蜜臀久久99精品久久久久久9| 日本va欧美va瓶| 国产精品国产三级国产在线观看| 四季av一区二区凹凸精品| 欧美日韩国产在线一区| 香蕉精品视频在线观看| 日本一区免费网站| 久久av免费看| 亚洲不卡av不卡一区二区| 日韩免费一区| 亚洲黑丝一区二区| 亚洲色图国产| 国产a久久精品一区二区三区| 日韩久久一区二区三区| 夜夜嗨一区二区| 国产精品激情| 在线综合亚洲| 国产劲爆久久| 国产婷婷精品| 日本а中文在线天堂| 91国语精品自产拍| 久久影院一区二区三区| 亚洲欧美成人综合| 精品三区视频| 91亚洲精品视频在线观看| 中文在线免费视频| 国产一区二区三区不卡视频网站 | 国产精品久久久免费| 国精品一区二区| 国产精品成人一区二区网站软件| 蜜桃av一区| 免费欧美一区| 国产精品伦理久久久久久| 日本成人在线一区| 午夜久久影院| 日韩在线观看不卡| 久久亚洲道色| 国产精品一区2区3区| 91成人超碰| 国产99久久| 久久男人av资源站| 国产一区二区三区久久| 日韩久久一区| 日本不卡视频一二三区| 亚洲一区二区小说| 蜜桃一区二区三区在线| 九一成人免费视频| 久久精品国产99久久| 国产精品亚洲一区二区三区在线观看| 精品一区二区三区中文字幕| 日本午夜免费一区二区| 日韩精品亚洲专区| 欧美日韩18| 欧美激情网址| 久久精品国内一区二区三区| 国产欧美欧美| 国产成人精品亚洲线观看| 日韩专区视频网站| 日本不卡的三区四区五区| **爰片久久毛片| 久久中文欧美| 欧美日中文字幕| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲乱码视频| 麻豆高清免费国产一区| 国产+成+人+亚洲欧洲在线| 日韩欧美一区二区三区免费看| 亚洲午夜91| 中文字幕亚洲精品乱码| 国产丝袜一区| 中文字幕在线免费观看视频| 国产精品99免费看| 国产麻豆综合| 国产精品一区二区99| 婷婷成人综合| 日本午夜精品久久久| 日本美女一区| 五月亚洲婷婷 | 蜜桃久久久久久久| 久久精品国产亚洲aⅴ| 91高清一区| 久久久免费人体| 亚洲午夜在线| 久久国产视频网| 欧美精选一区二区三区| 国产欧美日韩影院| 欧美精品一区二区久久| 国产精品久久久久久久久久久久久久久 | 亚洲人成亚洲精品| 午夜在线视频观看日韩17c| 日韩国产一区| 日韩av有码| 三级小说欧洲区亚洲区| 91精品丝袜国产高跟在线| 亚洲图片久久| 亚洲天堂av资源在线观看| 亚洲欧美日本日韩| 亚洲欧洲国产精品一区| 日韩va亚洲va欧美va久久| 国产一区2区| 视频一区欧美精品| 久久国产成人午夜av影院宅| 欧美日韩免费观看一区=区三区| 欧美中文一区二区| 久久精品九色| 国产videos久久| 中文字幕在线免费观看视频| av资源新版天堂在线| 激情中国色综合| 日韩深夜视频| 91精品99| 亚洲精品麻豆| 国产麻豆精品| 成人国产精选| 久久三级福利| 亚洲欧美日韩国产综合精品二区| 婷婷久久一区| 亚洲综合五月| 麻豆一区二区三区| 丰满少妇一区| 国产精品7m凸凹视频分类| 视频一区中文字幕国产| 欧美三区不卡| 国产一区日韩| 99国产成+人+综合+亚洲欧美| 水野朝阳av一区二区三区| 91大神在线观看线路一区| 九九99久久精品在免费线bt| 久久裸体视频| 日韩激情综合| 免费福利视频一区二区三区| 一本色道精品久久一区二区三区| 日本伊人午夜精品| 国产网站在线| 狠狠干成人综合网| 久久激情综合网| 欧美不卡高清| 国产精品一区二区99| 蜜桃成人av| 国产亚洲精品美女久久| 欧美日韩黑人| 黄色精品视频| 日本午夜精品一区二区三区电影 | 蜜臀av一区二区在线免费观看| 国产午夜久久av| 欧美日韩国产欧| 首页国产精品| 青草久久视频| 国产亚洲一级| 日韩高清不卡| 亚洲18在线| 亚洲一区二区小说| 波多野结衣一区| 国产成人久久精品一区二区三区| 国产精品高清一区二区| 日韩欧美美女在线观看| 亚洲最新av| 日韩1区2区日韩1区2区| 日日摸夜夜添夜夜添国产精品| 亚洲网站视频| 欧美三级精品| 国产福利片在线观看| 毛片在线网站| 久久久久午夜电影| 久久视频精品| 亚洲综合二区| 五月激激激综合网色播| 久久久久一区| 麻豆高清免费国产一区| 日韩成人精品一区二区| 久久裸体视频| 视频一区免费在线观看| 老鸭窝亚洲一区二区三区| 午夜视频精品| 99久久亚洲精品蜜臀| 丝袜美腿诱惑一区二区三区| 国内一区二区三区| 视频二区不卡| 亚洲欧美日韩在线观看a三区| 综合国产在线| 国产96在线亚洲| 自拍日韩欧美| 国产欧美另类| 国产亚洲精品久久久久婷婷瑜伽| 国产欧美一区二区色老头| 性一交一乱一区二区洋洋av| 国内不卡的一区二区三区中文字幕| 国产日韩欧美一区在线|