zoukankan      html  css  js  c++  java
  • webview如何自动登录保存登录信息详情

    在Linux下,Android模拟器里使用SD卡
    http://www.eoeandroid.com/thread-201250-1-1.html

    关于GridView布局和界面的跳转
    http://www.eoeandroid.com/thread-201252-1-1.html

    Android瀑布流加载图片效果实例
    http://www.eoeandroid.com/thread-176638-1-1.html

    这个是自己总结出来的经验,用户名密码登录验证后保存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();
     
                    }</i></i>

    如何在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);
                    }
            }

    这样就可以每次刷新页面的时候带着session一起请求

    如果想保存用户信息,还是老方法SharedPreferences

    原文链接:http://www.eoeandroid.com/thread-199811-1-1.html

  • 相关阅读:
    BZOJ1877: [SDOI2009]晨跑
    SPFA的两个优化:SLF与LLL
    BZOJ1858: [Scoi2010]序列操作
    java线程基础巩固---如何捕获线程运行期间的异常
    java线程基础巩固---如何给你的应用程序注入钩子程序
    类的命名空间与卸载详解及jvisualvm使用
    okhttp拦截器之RetryAndFollowUpInterceptor&BridgeInterceptor分析
    okhttp初识拦截器
    类加载器双亲委托机制实例深度剖析
    类加载器重要方法详解
  • 原文地址:https://www.cnblogs.com/vus520/p/2693332.html
Copyright © 2011-2022 走看看