文档章节

[Android实例] 关于webview如何自动登录保存登录信息

andyhe91
 andyhe91
发布于 2015/05/26 09:53
字数 411
阅读 2481
收藏 8

2013-02-04 16:48 4291人阅读 评论(2) 收藏 举报

【转载请注明原作者和原文链接】
这个是自己总结出来的经验,求版主推荐,求申精! 
用户名密码登录验证后保存Session

?

[java] view plaincopy

  1. // 你的URL  

  2.                 HttpPost httppost = new HttpPost(Constants.ServerUrl.WEB_URL + url);  

  3.                 try {  

  4.    

  5.                         List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);  

  6.    

  7.                         // Your DATA  

  8.                         nameValuePairs.add(new BasicNameValuePair("UserName", map  

  9.                                         .get("UserName")));  

  10.    

  11.                         nameValuePairs.add(new BasicNameValuePair("Password", map  

  12.                                         .get("Password")));  

  13.    

  14.                         httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));  

  15.    

  16.                         HttpResponse response;  

  17.    

  18.                         response = httpclient.execute(httppost);  

  19.                         if (response.getStatusLine().getStatusCode() == 200) {  

  20.                                 // 获得响应  

  21.                                 String result = EntityUtils.toString(response.getEntity());  

  22.                                 // SharedPreferences preferences = context.getSharedPreferences(  

  23.                                 // "login", Context.MODE_PRIVATE);  

  24.                                 // Editor editor = preferences.edit();  

  25.                                 // String handlers = "";  

  26.                                 String cookie = "";  

  27.                                 Date sessionTime = new Date();  

  28.                                 List<Cookie> cookies = httpclient.getCookieStore().getCookies();  

  29.                                 if (!cookies.isEmpty()) {  

  30.                                         for (int i = 0; i < cookies.size(); i++) {  

  31.                                                 cookie = cookies.get(i).getName() + "="  

  32.                                                                 + cookies.get(i).getValue() + ";domain="  

  33.                                                                 + cookies.get(i).getDomain();  

  34.                                                 ;  

  35.                                                 sessionTime = cookies.get(i).getExpiryDate();  

  36.                                         }  

  37.                                 }  

  38.                                //保存session  

  39.                                 PersistentConfig config = new PersistentConfig(context);  

  40.                                 config.setCookie(cookie);  

  41.    

  42.                                 config.setSessionTime(sessionTime.getTime());  

  43.                                 // for (int i = 0; i < response.getAllHeaders().length; i++) {  

  44.                                 // if (response.getAllHeaders()<i>.toString().contains(  

  45.                                 // "set-cookie")) {  

  46.                                 // handlers += response.getAllHeaders()<i>.toString();  

  47.                                 // break;  

  48.                                 // }  

  49.                                 // }  

  50.                                 //  

  51.                                 // editor.putString("cookies",  

  52.                                 // response.getHeaders("Set-Cookie")[0].toString());  

  53.                                 // editor.commit();  

  54.                                 return result;  

  55.                         }  

  56.    

  57.                 } catch (ClientProtocolException e) {  

  58.    

  59.                         // TODO Auto-generated catch block  

  60.    

  61.                         e.printStackTrace();  

  62.    

  63.                 } catch (IOException e) {  

  64.    

  65.                         // TODO Auto-generated catch block  

  66.    

  67.                         e.printStackTrace();  

  68.    

  69.                 }</i></i>  


如何在Webview请求网站时使用Session


[java] view plaincopy

  1.         //webview初始化的时候调用  

  2.         main_view = (WebView) findViewById(R.id.main_webview);  

  3.         new WebViewTask().execute();  

  4.            

  5.         private class WebViewTask extends AsyncTask<Void, Void, Boolean> {  

  6.                 String sessionCookie;  

  7.                 CookieManager cookieManager;  

  8.    

  9.                 @Override  

  10.                 protected void onPreExecute() {  

  11.                         CookieSyncManager.createInstance(MainActivity.this);  

  12.                         cookieManager = CookieManager.getInstance();  

  13.    

  14.                         sessionCookie = new PersistentConfig(getApplicationContext())  

  15.                                         .getCookieString();  

  16.                         if (sessionCookie != null) {  

  17.                                 // delete old cookies  

  18.                                 cookieManager.removeSessionCookie();  

  19.                         }  

  20.                         super.onPreExecute();  

  21.                 }  

  22.    

  23.                 protected Boolean doInBackground(Void... param) {  

  24.                         // this is very important - THIS IS THE HACK  

  25.                         SystemClock.sleep(1000);  

  26.                         return false;  

  27.                 }  

  28.    

  29.                 @Override  

  30.                 protected void onPostExecute(Boolean result) {  

  31.                         if (sessionCookie != null) {  

  32.                                 cookieManager.setCookie(Constants.ServerUrl.WEB_URL,  

  33.                                                 sessionCookie);  

  34.                                 CookieSyncManager.getInstance().sync();  

  35.                         }  

  36.                         main_view.setScrollbarFadingEnabled(true);  

  37.                         main_view.getSettings().setPluginsEnabled(true);  

  38.                         main_view.getSettings().setPluginState(PluginState.ON);  

  39.                         main_view.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);  

  40.                         WebSettings webSettings = main_view.getSettings();  

  41.                         webSettings.setJavaScriptEnabled(true);  

  42.                         // 设置可以访问文件  

  43.                         webSettings.setAllowFileAccess(true);  

  44.                         // 设置支持缩放  

  45.                         webSettings.setBuiltInZoomControls(true);  

  46.                         main_view.setWebViewClient(new WebViewClient() {  

  47.                                 @Override  

  48.                                 public void onPageStarted(WebView view, String url,  

  49.                                                 Bitmap favicon) {  

  50.                                         // TODO Auto-generated method stub   

  51.                                         super.onPageStarted(view, url, favicon);  

  52.                                 }  

  53.    

  54.                                 @Override  

  55.                                 public void onLoadResource(WebView view, String url) {  

  56.                                         // history();   

  57.                                 }  

  58.                         });  

  59.                         main_view.setWebChromeClient(new WebChromeClient() {  

  60.                                 public void onProgressChanged(WebView view, int progress) {  

  61.                                         //Change  

  62.                                 }  

  63.                         });  

  64.                         ShowUrlView(Constants.ServerUrl.INDEX);  

  65.                 }  

  66.         }  


© 著作权归作者所有

共有 人打赏支持
andyhe91
粉丝 58
博文 129
码字总数 209109
作品 0
长沙
私信 提问
Android 想做一个 android 登录功能,并且保持登录状态直至用户注销

android小白,现在做一个东西,android activity包裹webview。现在想实现一个登录功能。在欢迎页面的时候判断是否登录过,如果登录过就跳到webview。如果没登录过就跳到另一个activity去登录...

奈萌摸尔
2015/01/26
3.6K
2
android信息储存与提取

菜鸟提问几个关于Android的问题 1、Android 开发时,用户登录后的信息是保存在sqlite里面的还是保存在本地文件里面的?(还有各种信息也是同样的情况。例如:聊天记录的信息、图片头像等等的...

masha2017
2018/02/09
160
0
yubo_725/FlutterOSC

FlutterOSC 基于Google Flutter的开源中国客户端,支持Android和iOS。GitHub戳这里 关于Flutter Android扫码下载APK 说明 由于开源中国的openapi只提供了基于webview或浏览器的oauth认证方式...

yubo_725
2018/05/08
0
0
基于Google Flutter的开源中国客户端,支持Android与iOS

FlutterOSC 基于Google Flutter的开源中国客户端,支持Android和iOS。 码云戳这里 GitHub戳这里 关于Google Flutter Android扫码下载APK 请使用手机浏览器扫码下载,不要使用微信或者qq扫码 ...

我遇见谁_会有怎样的对白
2018/05/09
0
0
Webview SslError处理总结

如何处理应用中的 WebView SSL 错误处理程序提醒 本文面向的是在应用中采用的 WebViewClient.onReceivedSslError 处理程序实施方式不安全的开发者。具体来说,这种实施方式会忽略所有 SSL 证...

IamOkay
2017/06/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

设计模式-适配器模式

一、什么是适配器? 适配器就是一种适配中间件,将两种不匹配的东西进行适配连接,举一个生活中的例子。小金最近买了最新款的macbook pro,但是发现电脑的数据接口都变成了Type c接口,这导致...

kimyeongnam
29分钟前
2
0
在没有 Emacs 的情况下使用 Org 模式

每到年初似乎总有这么一个疯狂的冲动来寻找提高生产率的方法。新年决心,正确地开始一年的冲动,以及“向前看”的态度都是这种冲动的表现。软件推荐通常都会选择闭源和专利软件。但这不是必须...

linux-tao
42分钟前
3
0
Krpano skin_settings解释

<skin_settings maps="false" 是否显示地图按钮 maps_type="google" 地图类型 maps_bing_api_key="" bing地图授权key maps_google_......

华山猛男
43分钟前
3
0
兼容率达78%!首份Android Q版本兼容性评测报告出炉

据《Android Q Beta 1版本—国内主流千款典型应用兼容性测试数据评测报告》显示,该版本兼容率为78%。 那么,千款主流应用在Android Q版本兼容情况表现如何,不兼容的主要原因是什么,又将如...

安卓绿色联盟
45分钟前
2
0
二维数组排序

以二维数组$arr中apply_num为数字降序排列:array_multisort(array_column($arr,'apply_num'),SORT_DESC,SORT_NUMERIC,$arr);...

郭周园
50分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部