最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

實(shí)例詳解Android Webview攔截ajax請(qǐng)求

 更新時(shí)間:2017年11月30日 16:20:43   投稿:laozhang  
本篇內(nèi)容主要給大家講解了Android Webview攔截ajax請(qǐng)求的詳細(xì)講解,需要的朋友一起來學(xué)習(xí)一下。

Android Webview雖然提供了頁面加載及資源請(qǐng)求的鉤子,但是對(duì)于h5的ajax請(qǐng)求并沒有提供干涉的接口,這意味著我們不能在webview中干涉javascript發(fā)起的http請(qǐng)求,而有時(shí)候我們確實(shí)需要能夠截獲ajax請(qǐng)求并實(shí)現(xiàn)一些功能如:統(tǒng)一的網(wǎng)絡(luò)請(qǐng)求管理、cookie同步、證書校驗(yàn)、訪問控制等。

思路

雖然在 Webview中無法直接攔截 ajax請(qǐng)求(其實(shí)在shouldInterceptRequest 中是可以收到ajax請(qǐng)求的,但是遺憾的是取不到請(qǐng)求參數(shù),這樣也是沒有意義的), 我們可以轉(zhuǎn)換思路,能不能在js中將所有的請(qǐng)求轉(zhuǎn)發(fā)到native中,這樣也就達(dá)到了相同的目的。如果可以,那就需要一種在javascript和native之間通信的橋梁(javascript bridge),通過它,javascript將請(qǐng)求信息傳遞給native, native完成真正的請(qǐng)求后再將結(jié)果數(shù)據(jù)傳遞給javascript。那么我們的思路就是:

在javascript中攔截所有ajax請(qǐng)求,然后通過javascript bridge將請(qǐng)求信息傳遞給native
native收到請(qǐng)求信息后,進(jìn)行一些與處理邏輯,然后完成本次請(qǐng)求,將請(qǐng)求結(jié)果通過javascript bridge再回傳給javascript.
這樣,在第二步native上收到請(qǐng)求信息后,我們就可以進(jìn)行統(tǒng)一的網(wǎng)絡(luò)請(qǐng)求管理、cookie同步、證書校驗(yàn)、訪問控制。思路雖然簡單,但實(shí)現(xiàn)起來卻是比較麻煩,因?yàn)樾枰岸撕蚽ative都需要做不少的工作。那么有什么簡單的方法嗎?當(dāng)然有!

輪子

fly.js 是一個(gè)支持請(qǐng)求重定向的輕量級(jí)、跨平臺(tái)的Javascript http請(qǐng)求庫 ,前端可以使用它輕松發(fā)起網(wǎng)絡(luò)請(qǐng)求,它會(huì)自動(dòng)將請(qǐng)求轉(zhuǎn)發(fā)至native. 現(xiàn)在解決了第一個(gè)問題,接下來我們需要選一個(gè)javascript bridge, 而現(xiàn)在開源的javascript bridge挺多,你可以選擇任意一個(gè)你喜歡的。但是,在此強(qiáng)烈推薦一下 DSBridge 它是一個(gè)使用非常簡單并支持同步的跨平臺(tái)javascript birdge, 最關(guān)鍵的是, DSBridge 的demo中就有接收處理fly.js轉(zhuǎn)發(fā)的http請(qǐng)求的示例,并且給出了okhttp的實(shí)現(xiàn),并且,fly.js](https://github.com/wendux/fly) 官方也提供了DSBridge 的adapter. 下面我們以DSBridge為例,演示一下整個(gè)過程:

實(shí)例

前端

//引入dsbridge adapter
var adapter = require("flyio/dist/npm/adapter/dsbridge")
var EngineWrapper = require("flyio/dist/npm/engine-wrapper")
var dsEngine = EngineWrapper(adapter)
var fly = new Fly(dsEngine);

//接下來,通過fly發(fā)起的ajax請(qǐng)求都會(huì)轉(zhuǎn)發(fā)到native上
fly.post('/user', {
  name: 'Doris',
  age: 24
  phone:"18513222525"
 })
 .then(function (response) {
  console.log(response);
 })
 .catch(function (error) {
  console.log(error);
 });

Native端

 @JavascriptInterface
 public void onAjaxRequest(JSONObject jsonObject, final CompletionHandler handler){
  //jsonObject 為fly adapter 傳給端的requerst對(duì)象
  //端上完成請(qǐng)求后,將響應(yīng)對(duì)象通過hander返回給fly adapter
  //hanlder(response)
 }

fly.js中dsbridge的adapter會(huì)調(diào)用Native的 onAjaxRequest方法,native只需實(shí)現(xiàn)這個(gè)方法即可,完整的請(qǐng)求實(shí)現(xiàn)可以參照 DSbridge demo中 AjaxHandler 的實(shí)現(xiàn).

相關(guān)文章

  • 淺談Android Content Provider的使用

    淺談Android Content Provider的使用

    本篇文章小編為大家介紹,Android Content Provider的使用。需要的朋友參考下
    2013-04-04
  • Android實(shí)現(xiàn)懸浮按鈕功能

    Android實(shí)現(xiàn)懸浮按鈕功能

    在很多場(chǎng)景中,我們希望在應(yīng)用或系統(tǒng)任意界面上都能看到一個(gè)小的“懸浮按鈕”(Floating Button),用來快速啟動(dòng)工具、展示未讀信息或快捷操作,所以本文給大家介紹了如何在Android中實(shí)現(xiàn)懸浮按鈕功能,需要的朋友可以參考下
    2025-04-04
  • Android Mms之:深入理解對(duì)話列表管理

    Android Mms之:深入理解對(duì)話列表管理

    本篇文章是對(duì)Android中的對(duì)話列表管理進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • Flutter?Flow實(shí)現(xiàn)滑動(dòng)顯隱層示例詳解

    Flutter?Flow實(shí)現(xiàn)滑動(dòng)顯隱層示例詳解

    這篇文章主要為大家介紹了Flutter?Flow實(shí)現(xiàn)滑動(dòng)顯隱層示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Flutter app頁面路由以及路由攔截的實(shí)現(xiàn)

    Flutter app頁面路由以及路由攔截的實(shí)現(xiàn)

    本篇介紹了介紹了Flutter如何使用路由來實(shí)現(xiàn)頁面的跳轉(zhuǎn),從而簡化頁面之間的耦合,并可以實(shí)現(xiàn)路由攔截。
    2021-06-06
  • Android設(shè)置重復(fù)文字水印背景的方法

    Android設(shè)置重復(fù)文字水印背景的方法

    這篇文章主要為大家詳細(xì)介紹了Android設(shè)置重復(fù)文字水印背景的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Android實(shí)現(xiàn)計(jì)步進(jìn)度的環(huán)形Progress

    Android實(shí)現(xiàn)計(jì)步進(jìn)度的環(huán)形Progress

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)計(jì)步進(jìn)度的環(huán)形Progress,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Android從Fragment跳轉(zhuǎn)到其他Activity的簡單實(shí)例

    Android從Fragment跳轉(zhuǎn)到其他Activity的簡單實(shí)例

    這篇文章主要介紹了Android從Fragment跳轉(zhuǎn)到其他Activity的簡單實(shí)例,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Android自定義View實(shí)現(xiàn)漸變色儀表盤

    Android自定義View實(shí)現(xiàn)漸變色儀表盤

    這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)漸變色儀表盤,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Android中的異步任務(wù)處理與UI更新技巧

    Android中的異步任務(wù)處理與UI更新技巧

    在Android開發(fā)中,異步任務(wù)處理和UI更新是兩個(gè)非常重要的概念,本文將詳細(xì)介紹Android中異步任務(wù)的處理方式以及如何在異步任務(wù)完成后更新UI,并通過代碼示例介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-09-09

最新評(píng)論

芜湖县| 建德市| 南汇区| 襄垣县| 天镇县| 黔西| 东丽区| 荣昌县| 且末县| 邳州市| 安达市| 深水埗区| 弋阳县| 大足县| 常山县| 禄劝| 廊坊市| 尤溪县| 青海省| 南充市| 浦城县| 天峻县| 谷城县| 天门市| 仙桃市| 衡水市| 丘北县| 九龙坡区| 界首市| 武川县| 红桥区| 泌阳县| 阿勒泰市| 茂名市| 桓仁| 禹州市| 青河县| 孟津县| 邳州市| 广水市| 攀枝花市|