中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android Webview攔截ajax請求的示例分析

發布時間:2021-07-15 11:21:20 來源:億速云 閱讀:127 作者:小新 欄目:移動開發

小編給大家分享一下Android Webview攔截ajax請求的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

Android Webview雖然提供了頁面加載及資源請求的鉤子,但是對于h6的ajax請求并沒有提供干涉的接口,這意味著我們不能在webview中干涉javascript發起的http請求,而有時候我們確實需要能夠截獲ajax請求并實現一些功能如:統一的網絡請求管理、cookie同步、證書校驗、訪問控制等。

思路

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

在javascript中攔截所有ajax請求,然后通過javascript bridge將請求信息傳遞給native
native收到請求信息后,進行一些與處理邏輯,然后完成本次請求,將請求結果通過javascript bridge再回傳給javascript.
這樣,在第二步native上收到請求信息后,我們就可以進行統一的網絡請求管理、cookie同步、證書校驗、訪問控制。思路雖然簡單,但實現起來卻是比較麻煩,因為需要前端和native都需要做不少的工作。那么有什么簡單的方法嗎?當然有!

輪子

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

實例

前端

//引入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發起的ajax請求都會轉發到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對象
  //端上完成請求后,將響應對象通過hander返回給fly adapter
  //hanlder(response)
 }

fly.js中dsbridge的adapter會調用Native的 onAjaxRequest方法,native只需實現這個方法即可

看完了這篇文章,相信你對“Android Webview攔截ajax請求的示例分析”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

万盛区| 榆社县| 濮阳县| 肇东市| 泌阳县| 北安市| 托里县| 丰顺县| 绵阳市| 长治县| 黑水县| 霍山县| 田东县| 清徐县| 宁波市| 济源市| 龙川县| 儋州市| 潮州市| 陇川县| 崇州市| 开阳县| 巫溪县| 洪湖市| 舒城县| 苏尼特右旗| 黄山市| 汶上县| 迁西县| 礼泉县| 上蔡县| 宣化县| 隆德县| 新野县| 武乡县| 武宣县| 天气| 桃源县| 浑源县| 枣阳市| 宁晋县|