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

Android 加载html,两种添加Cookies的方法!

2018-01-26 10:30 585 查看
方式一:

publicvoidsynCookies(Contextcontext,Stringurl){
CookieSyncManager.createInstance(context);
CookieManagercookieManager=CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.removeSessionCookie();//移除
cookieManager.setCookie(url,String.format("%s=%s","uid",userEntry.getId()));
cookieManager.setCookie(url,String.format("%s=%s","xx",userEntry.getxxx()));
cookieManager.setCookie(url,String.format("%s=%s","xxx",userEntry.getPortCode()));

CookieSyncManager.getInstance().sync();
}


  方式2:
    

privatevoidsynCookies(finalContextcontext,finalStringurl){

newThread(newRunnable(){
@Override
publicvoidrun(){
CookieSyncManager.createInstance(context);
CookieManagercookieManager=CookieManager.getInstance();
try{
URLurlT=newURL(url);
try{
HttpURLConnectionurlConnection=(HttpURLConnection)urlT.openConnection();
StringcookieString=urlConnection.getHeaderField("Set-Cookie");
//使用cookieManager..setCookie()向URL中添加Cookie
cookieManager.setCookie(url,cookieString);
CookieSyncManager.getInstance().sync();
}catch(IOExceptione){
e.printStackTrace();
}
}catch(MalformedURLExceptione){
e.printStackTrace();
}
}
}).start();
}

  方式二的变种:
    

/**
*同步一下cookie
*/
//publicvoidsynCookies(Contextcontext,Stringurl){
//CookieSyncManager.createInstance(context);
//CookieManagercookieManager=CookieManager.getInstance();
//cookieManager.setAcceptCookie(true);
//cookieManager.removeSessionCookie();//移除
//Stringcookies=paramsUrl;
//cookieManager.setCookie(url,cookies);//cookies是在HttpClient中获得的cookie
//CookieSyncManager.getInstance().sync();
//}

 如果有cookies有很多项的话,添加方式如下:



用法:

synCookies(this,ContantUrl.carriage_suitcase);
mWebView.loadUrl(url);

注意事项:添加cookies的时候,setCookies(url,"xxx");中的url是最基本的url不要带参数!!!

结果:

   


    还有一种添加请求头的方式;但是方式和效果如下:

Map<String,String>headers=newTreeMap<>();
headers.put("uid",userEntry.getId());
headers.put("xxx",userEntry.getTxxx());
headers.put("xxx1",userEntry.getPortxxx());
mWebView.loadUrl(url,headers);
mWebView.setWebChromeClient(newWebViewClient());
mWebView.setWebViewClient(newandroid.webkit.WebViewClient());

   注意事项:
     这种方式的话,这两行注释掉,如果你的代码中有这两行,原因,我忘记了,自行百度

//webSettings.setSupportZoom(false);
//webSettings.setBuiltInZoomControls(false);

 效果如下:



图片没有截全:两种添加的效果通过抓包还是有区别的,自己仔细看一下,这种添加方式,虽然也是添加请求头,但是这三个参数前面,抓包的时候,会归类为:Miscellaneous(杂项:)这两种添加效果,主要看公司的要求了,

还有一些公司和js交互,为了保证安全,会不用cookies而改为seesion.




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