您的位置:首页 > 移动开发

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: