Android - 如何在 API 级别 4 上拦截 android WebViewClient 中的表单 POST [英] Android - how to intercept a form POST in android WebViewClient on API level 4
问题描述
我有一个 WebViewClient
附加到我的 WebView
像这样:
I have a WebViewClient
attached to my WebView
like so:
webView.setWebViewClient(new MyWebViewClient());
这是我对 MyWebViewClient
的实现:
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
webView.loadUrl(url);
return true;
}
}
我给 WebView
一个 URL 以通过 loadUrl()
加载.如果我在页面中有一个链接 (a href...
),我的 shouldOverrideUrlLoading
方法被调用,我可以拦截链接点击.
I give the WebView
a URL to load via loadUrl()
. If I have a link (a href...
) in the page, my shouldOverrideUrlLoading
method is called and I can intercept the link click.
但是,如果我有一个方法为 POST
的表单,则不会调用 shouldOverrideUrlLoading
方法.
However, if I have a form whose method is POST
, the shouldOverrideUrlLoading
method is not called.
我在这里发现了一个类似的问题:http://code.google.com/p/android/issues/detail?id=9122 似乎建议在我的 WebView
中覆盖 postUrl
.但是,此 API 仅从 API 级别 5 开始可用.
I noticed a similar issue here: http://code.google.com/p/android/issues/detail?id=9122 which seems to suggest overriding postUrl
in my WebView
. However, this API is only available starting from API level 5.
如果我处于 API 级别 4,我该怎么办?有没有其他方法可以拦截表单帖子?
What can I do if I'm on API level 4? Is there any other way to intercept form posts?
推荐答案
这是一个已知问题,shouldOverrideUrlLoading
不捕获 POST.请参阅 http://code.google.com/p/android/issues/detail?id=9122 了解详情.
This is known issue, that shouldOverrideUrlLoading
don't catch POST. See http://code.google.com/p/android/issues/detail?id=9122 for details.
使用获取!我个人尝试使用 POST,因为我预计 GET 参数(即 URL 的长度)有一些限制,但我只是成功地通过本地 GET 传递了 32000 个字节,没有任何问题.
Use GET! I personally tried using POST, because I expected some limitation of GET parameters (i.e. length of URL), but I just successfully passed 32000 bytes through GET locally without any problems.
这篇关于Android - 如何在 API 级别 4 上拦截 android WebViewClient 中的表单 POST的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!