关于Webview如何自动登录保存登录信息

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

用户名密码登录验证后保存Session

// 你的URL
                HttpPost httppost = new HttpPost(Constants.ServerUrl.WEB_URL + url);
                try {
 
                        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
 
                        // Your DATA
                        nameValuePairs.add(new BasicNameValuePair("UserName", map
                                        .get("UserName")));
 
                        nameValuePairs.add(new BasicNameValuePair("Password", map
                                        .get("Password")));
 
                        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
 
                        HttpResponse response;
 
                        response = httpclient.execute(httppost);
                        if (response.getStatusLine().getStatusCode() == 200) {
                                // 获得响应
                                String result = EntityUtils.toString(response.getEntity());
                                // SharedPreferences preferences = context.getSharedPreferences(
                                // "login", Context.MODE_PRIVATE);
                                // Editor editor = preferences.edit();
                                // String handlers = "";
                                String cookie = "";
                                Date sessionTime = new Date();
                                List<Cookie> cookies = httpclient.getCookieStore().getCookies();
                                if (!cookies.isEmpty()) {
                                        for (int i = 0; i < cookies.size(); i++) {
                                                cookie = cookies.get(i).getName() + "="
                                                                + cookies.get(i).getValue() + ";domain="
                                                                + cookies.get(i).getDomain();
                                                ;
                                                sessionTime = cookies.get(i).getExpiryDate();
                                        }
                                }
                               //保存session
                                PersistentConfig config = new PersistentConfig(context);
                                config.setCookie(cookie);
 
                                config.setSessionTime(sessionTime.getTime());
                                // for (int i = 0; i < response.getAllHeaders().length; i++) {
                                // if (response.getAllHeaders()<i>.toString().contains(
                                // "set-cookie")) {
                                // handlers += response.getAllHeaders()<i>.toString();
                                // break;
                                // }
                                // }
                                //
                                // editor.putString("cookies",
                                // response.getHeaders("Set-Cookie")[0].toString());
                                // editor.commit();
                                return result;
                        }
 
                } catch (ClientProtocolException e) {
 
                        // TODO Auto-generated catch block
 
                        e.printStackTrace();
 
                } catch (IOException e) {
 
                        // TODO Auto-generated catch block
 
                        e.printStackTrace();
 
                }

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

//webview初始化的时候调用  
        main_view = (WebView) findViewById(R.id.main_webview);  
        new WebViewTask().execute();  
           
        private class WebViewTask extends AsyncTask<Void, Void, Boolean> {  
                String sessionCookie;  
                CookieManager cookieManager;  
   
                @Override  
                protected void onPreExecute() {  
                        CookieSyncManager.createInstance(MainActivity.this);  
                        cookieManager = CookieManager.getInstance();  
   
                        sessionCookie = new PersistentConfig(getApplicationContext())  
                                        .getCookieString();  
                        if (sessionCookie != null) {  
                                // delete old cookies  
                                cookieManager.removeSessionCookie();  
                        }  
                        super.onPreExecute();  
                }  
   
                protected Boolean doInBackground(Void... param) {  
                        // this is very important - THIS IS THE HACK  
                        SystemClock.sleep(1000);  
                        return false;  
                }  
   
                @Override  
                protected void onPostExecute(Boolean result) {  
                        if (sessionCookie != null) {  
                                cookieManager.setCookie(Constants.ServerUrl.WEB_URL,  
                                                sessionCookie);  
                                CookieSyncManager.getInstance().sync();  
                        }  
                        main_view.setScrollbarFadingEnabled(true);  
                        main_view.getSettings().setPluginsEnabled(true);  
                        main_view.getSettings().setPluginState(PluginState.ON);  
                        main_view.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);  
                        WebSettings webSettings = main_view.getSettings();  
                        webSettings.setJavaScriptEnabled(true);  
                        // 设置可以访问文件  
                        webSettings.setAllowFileAccess(true);  
                        // 设置支持缩放  
                        webSettings.setBuiltInZoomControls(true);  
                        main_view.setWebViewClient(new WebViewClient() {  
                                @Override  
                                public void onPageStarted(WebView view, String url,  
                                                Bitmap favicon) {  
                                        // TODO Auto-generated method stub   
                                        super.onPageStarted(view, url, favicon);  
                                }  
   
                                @Override  
                                public void onLoadResource(WebView view, String url) {  
                                        // history();   
                                }  
                        });  
                        main_view.setWebChromeClient(new WebChromeClient() {  
                                public void onProgressChanged(WebView view, int progress) {  
                                        //Change  
                                }  
                        });  
                        ShowUrlView(Constants.ServerUrl.INDEX);  
                }  
        } 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏向治洪

文件图片上传

package com.home.upload;   import java.io.File;   import java.nio.charset.Char...

28650
来自专栏向治洪

android电话拦截

其实大家可以下载 xxx卫士看下,它设置来电拒接模式后,都是会启动设置MMI指令的界面。然后再去“设置->通话设置->来电转接”,看看 “占线时转接” 设置好的...

55190
来自专栏曾大稳的博客

MediaCodec硬编码pcm2aac

MediaCodec是Android(api>=16)提供的一个多媒体硬解编码库,能实现音视频的编解码。

30920
来自专栏向治洪

viewpager循环滚动和自动轮播的问题

ViewPager是一个常用的android组件,不过通常我们使用ViewPager的时候不能实现左右无限循环滑动,在滑到边界的时候会看到一个不能翻页的动画,...

35860
来自专栏java初学

android入门 — ProgressDialog/DatePickerDialog/TimePickerDialog

300110
来自专栏函数式编程语言及工具

Akka(31): Http:High-Level-Api,Route rejection handling

   Route 是Akka-http routing DSL的核心部分,使用户能比较方便的从http-server的角度筛选http-request、进行se...

26170
来自专栏Android 开发学习

Android Architecture Components 之LiveData, ViewModel

30740
来自专栏Android开发经验

常用的代码片段,不断更新

15020
来自专栏Android开发指南

3.CursorAdapter

402150
来自专栏潇涧技术专栏

Head First Android SwipeRefreshLayout

本文内容和代码参考自Implementing Swipe to Refresh, an Android Material Design UI Pattern,原...

10920

扫码关注云+社区

领取腾讯云代金券