WebView小技巧

WebView用到最多的就是loadurl,一句代碼皆大歡喜,但是沒辦法触菜,需求來了我們就得動(dòng)手解決逻澳。

1.web頁(yè)面是需要加密信息才能顯示,這時(shí)候需要我們帶參數(shù)過去驗(yàn)證

例如需要登錄信息才能瀏覽犬绒,2個(gè)方法

a.保證WebView頁(yè)面的session與登錄接口返回的session值一致

清除web瀏覽器中的session

CookieSyncManager.createInstance(getContext());

CookieSyncManager.getInstance().startSync();

CookieManager.getInstance().removeSessionCookie();

給http設(shè)置攔截器 可以捕獲request和response信息,從而我們可以獲得我們需要的session值

OkHttpClient.Builder clientBuilder =new OkHttpClient.Builder();

clientBuilder.addInterceptor(new HttpLoggingInterceptor());

重寫攔截器的Response? intercept(Chain chain)方法

Request request = chain.request();

Response response = chain.proceed(request);

response.header("Set-Cookie")即獲得 session值

設(shè)置session

try {

? ? CookieSyncManager.createInstance(context);

? ? CookieManager cookieManager = CookieManager.getInstance();

? ? cookieManager.setAcceptCookie(true);

? ? cookieManager.removeSessionCookie();// 移除

? ? cookieManager.removeAllCookie();

? ? String oldCookie = cookieManager.getCookie(url);

? ? URL aURL =new URL(url);

? ? StringBuilder sbCookie =new StringBuilder();

? ? sbCookie.append(PreferencesHelper.getData("COOKIE"));

? ? //webview在使用cookie前會(huì)前判斷保存cookie的domain和當(dāng)前要請(qǐng)求的domain是否相同兑凿,相同才會(huì) 發(fā)送cookie

? //注意凯力,是getHost()茵瘾,不是getAuthority(),

? ? sbCookie.append(String.format(";domain=%s", aURL.getHost()));

? ? String cookieValue = sbCookie.toString();

? ? cookieManager.setCookie(url, cookieValue);

? ? CookieSyncManager.getInstance().sync();

? ? String newCookie = cookieManager.getCookie(url);

? ? webView.loadUrl(url);

}catch (Exception e) {

}

b.使用Webview.postUrl();傳遞驗(yàn)證參數(shù)

SearchBodyBean bean =new SearchBodyBean();

bean.sid = PreferencesHelper.getData(Constan.SID);

bean.userName = PreferencesHelper.getData(Constan.ACOUNT);

?bean.token = AESUtil.shaEncrypt(bean.userName + bean.sid + Constan.AES_KEY);

?webView.postUrl(url, new Gson().toJson(bean).toString().getBytes());

這個(gè)方式比較簡(jiǎn)單,但是要注意出現(xiàn)特殊字符導(dǎo)致數(shù)據(jù)缺失的問題咐鹤,出現(xiàn)較多的有數(shù)據(jù)中存在“+”號(hào)拗秘,到后臺(tái)了,“+”號(hào)全部都不見了祈惶。

由于數(shù)據(jù)是加密過的BASE64雕旨,會(huì)不時(shí)出現(xiàn)一些符合,如

webview.postUrl("www.testurl.com","data=abcdefg");

加密過后變成了捧请。

webview.postUrl("www.testurl.com","data=dhfakjsdfhksdhf+dfasjkdhf+adsfkhasld");

傳到后臺(tái)解析:

key:data

value:dhfakjsdfhksdhf dfasjkdhf adsfkhasld

解決方案如下

try {

postData? = URLEncoder.encode(data.toString(),"utf-8");

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

URLEncoder就對(duì)字符進(jìn)行了比較好的處理了凡涩。

最后。疹蛉。活箕。。

webView.postUrl(“www.testurl.com”,("data="+postData).getBytes());

2 WebView高度顯示不全或者無法滑出最底部

這個(gè)問題的根本原因是我們給出WebView控件的寬高和加載完頁(yè)面之后頁(yè)面實(shí)際的寬高有出入氧吐,這里讓我感覺webview這個(gè)控件有點(diǎn)缺陷讹蘑。沒關(guān)系我們還是有辦法解決。

還原場(chǎng)景的布局

給webview設(shè)置weight希望它自己控制高度

這里的在點(diǎn)擊Webview內(nèi)部鏈接時(shí)會(huì)用JS調(diào)用頁(yè)面隱藏顯示頭布局和底部布局筑舅,設(shè)置weight希望webview自己控制高度.但是實(shí)際上會(huì)出現(xiàn)隱藏頭尾的時(shí)候頁(yè)面顯示不全座慰,或者回退顯示頭尾時(shí),頁(yè)面在最下面無法滑動(dòng)出來(發(fā)現(xiàn)實(shí)際上webview的高度還是全屏翠拣,被底布局遮擋)版仔,馬丹,這個(gè)問題困擾了我一天误墓,實(shí)際解決卻很簡(jiǎn)單蛮粮,不多廢話,說方案谜慌。

在頁(yè)面加載完成之后重新按當(dāng)前需求設(shè)置webview的高度然想。是不是很簡(jiǎn)單!其實(shí)只是我們不知道哪里出了問題而已欣范。

3.Webview加載自簽名的https網(wǎng)址問題

Https自定義證書引入問題(2)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末变泄,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子恼琼,更是在濱河造成了極大的恐慌妨蛹,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晴竞,死亡現(xiàn)場(chǎng)離奇詭異蛙卤,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門颤难,熙熙樓的掌柜王于貴愁眉苦臉地迎上來神年,“玉大人,你說我怎么就攤上這事行嗤×鲂洌” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵昂验,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我艾扮,道長(zhǎng)既琴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任泡嘴,我火速辦了婚禮甫恩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘酌予。我一直安慰自己磺箕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開白布抛虫。 她就那樣靜靜地躺著松靡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪建椰。 梳的紋絲不亂的頭發(fā)上雕欺,一...
    開封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天,我揣著相機(jī)與錄音棉姐,去河邊找鬼屠列。 笑死,一個(gè)胖子當(dāng)著我的面吹牛伞矩,可吹牛的內(nèi)容都是我干的笛洛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼乃坤,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼苛让!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起侥袜,我...
    開封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤蝌诡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后枫吧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體浦旱,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年九杂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了颁湖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宣蠕。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖甥捺,靈堂內(nèi)的尸體忽然破棺而出抢蚀,到底是詐尸還是另有隱情,我是刑警寧澤镰禾,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布皿曲,位于F島的核電站,受9級(jí)特大地震影響吴侦,放射性物質(zhì)發(fā)生泄漏屋休。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一备韧、第九天 我趴在偏房一處隱蔽的房頂上張望劫樟。 院中可真熱鬧,春花似錦织堂、人聲如沸叠艳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)附较。三九已至,卻和暖如春闽烙,著一層夾襖步出監(jiān)牢的瞬間翅睛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工黑竞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留捕发,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓很魂,卻偏偏與公主長(zhǎng)得像扎酷,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子遏匆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理法挨,服務(wù)發(fā)現(xiàn),斷路器幅聘,智...
    卡卡羅2017閱讀 134,702評(píng)論 18 139
  • 1凡纳、不安全的隨機(jī)數(shù)生成,在CSRF TOKEN生成帝蒿、password reset token生成等荐糜,會(huì)造成toke...
    nightmare丿閱讀 3,705評(píng)論 0 1
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,814評(píng)論 0 11
  • 一、關(guān)于青春的煩惱,沒能趟過去的都是遺憾暴氏,趟過去的延塑,那都不是事。 耿耿是一個(gè)中考開掛的女孩答渔,因?yàn)橹锌嫉某0l(fā)揮來到...
    釋然andy閱讀 321評(píng)論 0 2
  • 轉(zhuǎn)自:詳解https是如何確保安全的? Https 介紹 什么是Https HTTPS(全稱:Hypertext ...
    風(fēng)化成石閱讀 35,799評(píng)論 0 19