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

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

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

瀏覽:200日期: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久久,三上悠亚国产精品一区二区三区
www.九色在线| 亚洲一级大片| 国产综合激情| 91精品国产自产精品男人的天堂 | 国产亚洲高清视频| 免费在线成人| 日韩美女精品| 在线视频观看日韩| 国产一区二区三区免费在线| 亚洲欧美日本日韩| 国产精品久久久网站| 99久久久久国产精品| 亚洲综合日本| 视频一区二区中文字幕| 精品久久在线| 午夜一区在线| 日韩在线播放一区二区| 91国内精品| 国产一区福利| 在线精品视频在线观看高清| 91精品国产自产在线丝袜啪| 日韩av成人高清| 久久精品毛片| 日韩中出av| 久久精品五月| 日韩欧美三级| 偷拍亚洲精品| 久久精品99久久久| 中文日韩在线| 亚洲精品系列| 精品香蕉视频| 国产精品女主播一区二区三区| 欧美日韩夜夜| 久久久水蜜桃av免费网站| 在线看片日韩| 精品国产乱码久久久久久1区2匹| 欧美日韩一区二区综合| 日韩欧美2区| 日韩国产一区| 免费欧美在线视频| 嫩呦国产一区二区三区av| 亚洲香蕉网站| 欧美激情综合| 国产精品毛片在线看| 久久成人高清| 日韩一级欧洲| 国产一区二区精品福利地址| 在线视频精品| 精品国产麻豆| 日韩中文字幕一区二区高清99| 成人午夜国产| 精品国产欧美| 日韩天堂av| 精品久久视频| 中文一区在线| 天堂中文在线播放| 国产日韩一区二区三区在线| 久久激情网站| 日本不卡一区二区| 欧美久久精品一级c片| 免费日韩成人| 中文字幕亚洲精品乱码| 久久婷婷亚洲| 丰满少妇一区| 97久久亚洲| 日本欧美在线看| 欧美亚洲国产激情| 91视频久久| 美女视频免费精品| 99国产精品自拍| 日韩成人亚洲| 精品五月天堂| 国产精品成人自拍| 日韩激情中文字幕| 蜜臀av性久久久久蜜臀aⅴ四虎| 色爱av综合网| 中文字幕在线免费观看视频| 久久精品国产99国产| 国产视频一区二| 日韩二区在线观看| 视频一区日韩精品| 天使萌一区二区三区免费观看| 91精品国产调教在线观看| 日韩中文欧美| 精品国产乱码久久久久久1区2匹| 91p九色成人| 亚洲精品系列| 亚洲欧美网站在线观看| 亚洲一区二区三区在线免费| 国产农村妇女精品一二区| 国产99精品一区| 91精品国产91久久久久久黑人| av最新在线| 欧美香蕉视频| 亚洲天堂久久| 在线亚洲一区| 蜜臀国产一区二区三区在线播放| 国产偷自视频区视频一区二区| 日韩午夜av| 亚洲激情中文| 亚洲一区二区三区高清| 国产亚洲一级| 蜜桃视频一区二区三区在线观看| 免费黄网站欧美| 日韩激情视频网站| 国产精品亚洲片在线播放| 欧美激情麻豆| 97成人超碰| 国产精品极品在线观看| 国产精品久久久亚洲一区| 国产欧美自拍| 精品久久一区| 成人久久一区| 宅男噜噜噜66国产日韩在线观看| 一区免费在线| 三级欧美在线一区| 欧美另类中文字幕| yellow在线观看网址| 欧美日韩国产高清| 日韩一区二区三区免费视频 | 国产精品115| 麻豆视频久久| 99精品在线| 日韩精品一二三四| 国产福利资源一区| 精精国产xxxx视频在线播放 | 香蕉视频亚洲一级| av不卡免费看| 日韩精品欧美大片| 精品一区二区三区四区五区| 久久国产成人午夜av影院宅| 香蕉久久久久久久av网站| 日韩精品导航| 国产理论在线| 男人的天堂久久精品| 国产色99精品9i| 成人久久一区| 日韩欧美三区| 伊人久久在线| 日韩中出av| 中文字幕成在线观看| 欧美~级网站不卡| 日韩精品三级| 久久视频精品| 国产亚洲一卡2卡3卡4卡新区| 日韩在线视频精品| 日韩亚洲精品在线观看| 日韩欧美三级| 91精品丝袜国产高跟在线| 神马午夜久久| 国产欧美视频在线| 蜜桃视频欧美| 欧美激情aⅴ一区二区三区| 91精品观看| 精品国产亚洲一区二区三区大结局 | 欧美日本不卡高清| 久久久久久久久99精品大| 欧美一级网址| 久久久久99| 久久一区亚洲| 日韩精品中文字幕一区二区| 欧美va亚洲va日韩∨a综合色| 国产乱人伦精品一区| 国产亚洲在线| 成人在线超碰| 日本三级亚洲精品| 亚洲深夜影院| 日韩欧美一区二区三区在线视频| 亚洲精品麻豆| 婷婷中文字幕一区| 久久久国产精品入口麻豆| 亚洲精品一二三**| 悠悠资源网久久精品| 国产成人免费av一区二区午夜| 日韩av一区二| 亚洲综合婷婷| 影院欧美亚洲| 99久久亚洲精品蜜臀| 日本欧美国产| 国产精品1luya在线播放| 免费观看久久av| 美腿丝袜亚洲一区| 日韩二区三区在线观看| 五月精品视频| 久久男人天堂| 久久精品国产免费| 日本91福利区| 亚洲一级淫片| 免费在线观看一区二区三区| 亚洲精品小说| 久久九九国产| 欧美香蕉视频| 欧美www视频在线观看| 欧美自拍一区| 日本va欧美va瓶| 日韩精品一区二区三区免费视频| 99视频一区| 国产精品嫩草99av在线| 欧美sss在线视频| 日本а中文在线天堂|