V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pubby
V2EX  ›  Android

webview 有什么好的替换品吗,正在做一个 app,需要捕获所有请求并处理

  •  
  •   pubby · 2016-05-05 13:12:51 +08:00 · 11055 次点击
    这是一个创建于 3142 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求比较特殊,要捕获所有请求,转到特殊代理通道再返回结果给页面

    api 21 之后用这个截获所有请求

    public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request)
    

    对 GET 请求都没问题,但是 POST 之类的请求,只能从 request 上得到 method,url,headers 之类的数据,无法获取请求数据(post data)

    网上查了一下,这个 issue 提了有两年了官方还没加上这个功能

    11 条回复    2016-05-08 15:55:15 +08:00
    MntCw
        1
    MntCw  
       2016-05-05 13:33:54 +08:00 via Android
    我之前也遇到这个问题, Ajax 可以 post 过去。也想知道有没有更好的解决方法
    pubby
        2
    pubby  
    OP
       2016-05-05 13:38:42 +08:00
    @MntCw 嗯,是可以用一些其他手段解决一部分,比如注入 js 拦截一些接口,转到 app 内部处理。
    就是不太通用
    Gonster
        3
    Gonster  
       2016-05-05 13:44:58 +08:00
    插个题外话,手机好多 APP 用第三方身份提供商通过 OAuth2.0 做登录的,手机应用登录的时候用 webview 打开提供商的登录页面, webview 的请求内容可以被手机应用拦截,那用 OAuth2.0 的意义呢,密码不是会被手机应用获取到吗。
    wadahana
        4
    wadahana  
       2016-05-05 14:21:38 +08:00
    1. webview 可以设置代理。
    2. elf hook 某几个动态库的 connect 函数.
    pubby
        5
    pubby  
    OP
       2016-05-05 14:37:58 +08:00
    @wadahana
    1 可以单独 webview 设代理? app 其他功能的网络还是要走正常通道的
    2 貌似得 root 吧
    faywong8888
        6
    faywong8888  
       2016-05-05 14:38:44 +08:00
    与楼上相同,
    给 webview 设置代理是一条可行的道路。
    wadahana
        7
    wadahana  
       2016-05-05 14:56:05 +08:00   ❤️ 2
    看版本,>=14 < 19 可针对 webview , 其他都是全局。
    你把全部请求拿到本地 http proxy 再做一次过滤。
    wadahana
        8
    wadahana  
       2016-05-05 15:30:39 +08:00
    最好的替代品就是自己编个 webkit......
    TonyYOYO
        9
    TonyYOYO  
       2016-05-05 17:47:07 +08:00
    @wadahana 我们 iOS 这边是这样做的,
    pubby
        10
    pubby  
    OP
       2016-05-05 18:14:57 +08:00
    @TonyYOYO 自己修改个 webkit 用?
    TonyYOYO
        11
    TonyYOYO  
       2016-05-08 15:55:15 +08:00
    @pubby 不是啊,就是通过 proxy 做过滤
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2664 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 14:41 · PVG 22:41 · LAX 06:41 · JFK 09:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.