• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

android - 有没有办法在 Android 上的 PhoneGap 中拦截 HTTP 请求?

[复制链接]
菜鸟教程小白 发表于 2022-12-12 21:11:52 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

iOS 中在 PhoneGap 上使用了一种相当常见的技术:拦截 HTTP(或 URL)协议(protocol),以便从其他来源(例如,来自缓存)为基于 PhoneGap 的应用程序提供内容。您只需使用 NSURLProtocol and co 实现新协议(protocol).

所以你可以介绍例如cache://server1/lookup1.json 类型的 URL(方案是“缓存”),可以从 PhoneGap 中的 JavaScript 调用,它将到达您的 NSURLProtocol 实现,以便您可以例如在询问真实服务器之前查看本地缓存。我想这是一种很好的方式来实现即使在离线模式下也可以运行的应用程序(当然是在有限的时间内)。

现在的问题是:Android 上是否有类似的可能性? 我知道没有 NSURLProtocol 的直接版本(甚至不能——你通常在 Java/Dalvik 运行时中,PhoneGap Web 浏览器组件作为 native 组件运行)。所以我可能会寻找更有创意的方法来拦截它......也许在 JavaScript 中,也许在 PhoneGap/Cordova Android 代码中,也许是浏览器组件的一些 native 插件。

我会很感激这里的任何提示,我实际上需要将在 iOS 上以这种方式构建的基于 PhoneGap 的应用程序移植到 Android。



Best Answer-推荐答案


@Ales 您可以使用自定义 JavaScript 函数轻松拦截任何平台中的任何方案,无论是 iOS 还是 Android。 Phonegap webview 不会打开以 javascript 开头的 url,而是跳过它以进一步处理 javscript 代码本身。我为此准备了一个小型工作演示。希望它符合您的要求。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script>
  $(function(){
    $('a').click(function(event) {
      var hrefValue = $(this).attr('href');
      var pattern = /^((cache|myapp):\/\/)/; // Add schemes to this list according to your need. i have added two
      if(pattern.test(hrefValue)) {         
        event.preventDefault();         
        var tempArray = hrefValue.split('://');
        var urlScheme = tempArray[0];
        var urlPath = tempArray[1];
        // perform specfic actions based on scheme
        if(urlScheme == 'cache') {      
             $.getJSON( 'http://'+urlPath, function( data ) {           
                $("#response").html(JSON.stringify(data));
             });    
        }
    }
});
</script>
<style>
a { display:block; }
</style>
<a href="cache://ip.jsontest.com">Cache Scheme</a>
<a href="http://ip.jsontest.com">Http Scheme</a>
<div id="response"></div>

关于android - 有没有办法在 Android 上的 PhoneGap 中拦截 HTTP 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22837624/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap