您的位置:首页 > 理论基础 > 计算机网络

使用HttpURLConnection加载htm(超链接)获得cookie并将cookie同步到webView中

2017-03-13 18:02 465 查看
一、【环境】

    1.原生页面使用webView加载h5页面(浏览);

    2.(购买商品时)后台h5使用cookie判断登录状态;

    3.没登录情况下js调用原生登录窗口;

    4.原生登录后将cookie同步到webView;



二、【步骤】

    1.新开线程加载httpUrlConnection

/**检测网址*/
private void detectionUrl(final String url) {
new Thread(new Runnable() {
@Override
public void run() {
getRespStatus(url);
}
}).start();
}    2.加载html读取状态与cookie
/**获得网页请求码*/
private int getRespStatus(String htmlUrl) {
int status=0;
try {
URL url = new URL(htmlUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setUseCaches(false);//请求不能使用缓存
conn.setConnectTimeout(3000);//链接超时
status = conn.getResponseCode();
String sessionId = "";
String cookieVal = "";
String key = null;
//取cookie
for(int i = 1; (key = conn.getHeaderFieldKey(i)) != null; i++){
if(key.equalsIgnoreCase("set-cookie")){
cookieVal = conn.getHeaderField(i);
// cookieVal = cookieVal.substring(0, cookieVal.indexOf(";"));
sessionId = sessionId + cookieVal + ";";
}
}
myWv.synCookies(context,htmlUrl,cookieVal);//同步cookie到webView
} catch (IOException e) {
e.printStackTrace();
}
AutoLog.v(TAG, "H5地址-------------:" + htmlUrl + " 请求码:" + status);
return status;
}    3.同步cookie
/**
* 同步一下cookie
*/
public void synCookies(Context context, String url, String cookies) {
CookieSyncManager.createInstance(context);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.removeSessionCookie();//移除
cookieManager.setCookie(url, cookies);//cookies是在HttpClient中获得的cookie
CookieSyncManager.getInstance().sync();
}
    *注:



    4.关闭webView时清空cookie

public void clearWebViewCache(Context context){
// 清除cookie即可彻底清除缓存
CookieSyncManager.createInstance(context);
CookieManager.getInstance().removeAllCookie();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息