【发布时间】:2014-10-05 13:00:12
【问题描述】:
标题说明了一切。我想知道WebView 要求的一切。一些奇怪的限制,比如不知道 XHR POST 是不可接受的。换句话说,类似 iOS 的东西在 NSURLProtocol 中。那是应用程序范围的钩子。我不需要这种级别的控制,WebView-instance-specific 钩子就足够了。现在,我知道 Android 上没有类似的东西。我知道shouldOverrideUrlLoading 和shouldInterceptRequest,但它基本上无法使用。我需要了解requests(方法、HTTP 版本、标头,你知道),而不仅仅是 URL 字符串。此外,拦截是尴尬的同步。如果shouldInterceptRequest 呼叫因为我需要向其他服务器询问相关资源而被阻止,会发生什么情况?在我看来,它只是为本地资源缓存而设计的。
另一方面,我愿意为这个问题抛任何东西。某种本机库,挂钩到低级内部?借助现有项目(pwnall、mogoweb)扩展 Chromium 接口?反映到现有的 webkit 类私有?特定于应用程序的代理?任何见解表示赞赏。我已经阅读了两打现有的 SO 问题。他们要么都建议部分破解(例如使用 JavaScript 解决 XHR POST 缺陷),要么经常完全没有响应。
【问题讨论】:
-
长期来看,你可以看看Mozilla's GeckoView 是否有更多的钩子来满足你的需求。您列出的唯一一个我非常信任的解决方案就是代理。
-
@CommonsWare:就 Mark Finkle 而言,GeckoView 似乎是一匹死马。它似乎在大约一年前停滞不前。我的列表并不权威,而是 Android 高级大脑的狂想风暴。那么应该可以使用特定于应用程序的代理吗?更多信息的谷歌拼写是什么? :)
-
我搜索了
android webview proxy。请注意,这不受支持,但它可能比您列表中的其他选项更稳定。
标签: android webview chromium nsurlprotocol