android webview内的post请求(点击按钮)添加header行不通
2014-11-12 13:53
1041 查看
处理WebView中的非超链接请求(如Ajax请求):
有时候需要加上请求头,但是非超链接的请求,没有办法再shouldOverrinding中拦截并用webView.loadUrl(String url,HashMap headers)方法添加请求头
目前用了一个临时的办法解决:
首先需要在url中加特殊标记/协议, 如在onWebViewResource方法中拦截对应的请求,然后将要添加的请求头,以get形式拼接到url末尾
在shouldInterceptRequest()方法中,可以拦截到所有的网页中资源请求,比如加载JS,图片以及Ajax请求等等
Ex:
[java] view
plaincopy
@SuppressLint("NewApi")
@Override
public WebResourceResponse shouldInterceptRequest(WebView view,String url) {
// 非超链接(如Ajax)请求无法直接添加请求头,现拼接到url末尾,这里拼接一个imei作为示例
String ajaxUrl = url;
// 如标识:req=ajax
if (url.contains("req=ajax")) {
ajaxUrl += "&imei=" + imei;
}
return super.shouldInterceptRequest(view, ajaxUrl);
}
Android如何拦截WebView之中的Post或者Get请求
WebView webView = (WebView) findViewById(R.id.web_view);
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Toast.makeText(getApplicationContext(),
"WebViewClient.shouldOverrideUrlLoading",
Toast.LENGTH_SHORT);
view.loadUrl(url);
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap
favicon) {
Toast.makeText(getApplicationContext(),
"WebViewClient.onPageStarted",
Toast.LENGTH_SHORT).show();
//这儿可以截获网页的URL,可以都URL进行分析。
//本例子之中是分析从通过RenRen登录成功后返回的access_token.
if (url.contains("graph.renren.com/oauth/login_success.html")) {
int start = url.indexOf("access_token") + "access_token=".length();
int end = url.indexOf("expires_in") - 1;
accessToken = url.substring(start, end);
}
super.onPageStarted(view, url, favicon);
}
});
webView.loadUrl(myUrl);
有时候需要加上请求头,但是非超链接的请求,没有办法再shouldOverrinding中拦截并用webView.loadUrl(String url,HashMap headers)方法添加请求头
目前用了一个临时的办法解决:
首先需要在url中加特殊标记/协议, 如在onWebViewResource方法中拦截对应的请求,然后将要添加的请求头,以get形式拼接到url末尾
在shouldInterceptRequest()方法中,可以拦截到所有的网页中资源请求,比如加载JS,图片以及Ajax请求等等
Ex:
[java] view
plaincopy
@SuppressLint("NewApi")
@Override
public WebResourceResponse shouldInterceptRequest(WebView view,String url) {
// 非超链接(如Ajax)请求无法直接添加请求头,现拼接到url末尾,这里拼接一个imei作为示例
String ajaxUrl = url;
// 如标识:req=ajax
if (url.contains("req=ajax")) {
ajaxUrl += "&imei=" + imei;
}
return super.shouldInterceptRequest(view, ajaxUrl);
}
Android如何拦截WebView之中的Post或者Get请求
WebView webView = (WebView) findViewById(R.id.web_view);
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Toast.makeText(getApplicationContext(),
"WebViewClient.shouldOverrideUrlLoading",
Toast.LENGTH_SHORT);
view.loadUrl(url);
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap
favicon) {
Toast.makeText(getApplicationContext(),
"WebViewClient.onPageStarted",
Toast.LENGTH_SHORT).show();
//这儿可以截获网页的URL,可以都URL进行分析。
//本例子之中是分析从通过RenRen登录成功后返回的access_token.
if (url.contains("graph.renren.com/oauth/login_success.html")) {
int start = url.indexOf("access_token") + "access_token=".length();
int end = url.indexOf("expires_in") - 1;
accessToken = url.substring(start, end);
}
super.onPageStarted(view, url, favicon);
}
});
webView.loadUrl(myUrl);
相关文章推荐
- 【android】WebView使用Post请求和设置浏览器弹框
- Android通过Post请求网页(WebView)
- Android ListView添加了HeaderView后,出现点击HeaderView区域跳转的问题
- Android WebView添加Cookie和添加请求的头
- android ListView 添加 HeaderView 和 FooterView时 不可选择点击
- Android中webview加载的网页上的按钮点击失效
- Android-点击WebView中的按钮,关闭当前activity
- android 点击webView中的按钮修改布局问题
- 在android中,如何去掉webview读取网页后点击网页上的按钮出现的方框
- Android WebView POST请求详解
- WebView内使用post加载url并添加header
- 【Android进阶】Android里webview不支持input file的解决方法(上传按钮点击失效的原因)
- 请问android直接post请求登录地址成功后,webview还是现实登录界面
- 【Android进阶】Android里webview不支持input file的解决方法(上传按钮点击失效的原因)
- 对于android WebView加载点击按钮弹框无反应的问题
- android中webview显示网页、进度条显示进度、上一页、下一页、支持放大缩小、返回按钮2秒两次点击退出应用
- Recyclerview 添加webview为header 点击webview 会自动滚动问题
- Android中WebView中拦截所有请求并替换URL(支持AJAX的post请求类型)
- Android WebView POST请求详解
- android 调用js webView网页,点击提交按钮无效(注意加上setWebChromeClient())