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

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. List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
  5. // Your DATA
  6. nameValuePairs.add(new BasicNameValuePair("UserName", map
  7. .get("UserName")));
  8. nameValuePairs.add(new BasicNameValuePair("Password", map
  9. .get("Password")));
  10. httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
  11. HttpResponse response;
  12. response = httpclient.execute(httppost);
  13. if (response.getStatusLine().getStatusCode() == 200) {
  14. // 获得响应
  15. String result = EntityUtils.toString(response.getEntity());
  16. // SharedPreferences preferences = context.getSharedPreferences(
  17. // "login", Context.MODE_PRIVATE);
  18. // Editor editor = preferences.edit();
  19. // String handlers = "";
  20. String cookie = "";
  21. Date sessionTime = new Date();
  22. List<Cookie> cookies = httpclient.getCookieStore().getCookies();
  23. if (!cookies.isEmpty()) {
  24. for (int i = 0; i < cookies.size(); i++) {
  25. cookie = cookies.get(i).getName() + "="
  26. + cookies.get(i).getValue() + ";domain="
  27. + cookies.get(i).getDomain();
  28. ;
  29. sessionTime = cookies.get(i).getExpiryDate();
  30. }
  31. }
  32. //保存session
  33. PersistentConfig config = new PersistentConfig(context);
  34. config.setCookie(cookie);
  35. config.setSessionTime(sessionTime.getTime());
  36. // for (int i = 0; i < response.getAllHeaders().length; i++) {
  37. // if (response.getAllHeaders()<i>.toString().contains(
  38. // "set-cookie")) {
  39. // handlers += response.getAllHeaders()<i>.toString();
  40. // break;
  41. // }
  42. // }
  43. //
  44. // editor.putString("cookies",
  45. // response.getHeaders("Set-Cookie")[0].toString());
  46. // editor.commit();
  47. return result;
  48. }
  49. } catch (ClientProtocolException e) {
  50. // TODO Auto-generated catch block
  51. e.printStackTrace();
  52. } catch (IOException e) {
  53. // TODO Auto-generated catch block
  54. e.printStackTrace();
  55. }</i></i>

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

[java] view plaincopy

  1. //webview初始化的时候调用
  2. main_view = (WebView) findViewById(R.id.main_webview);
  3. new WebViewTask().execute();
  4. private class WebViewTask extends AsyncTask<Void, Void, Boolean> {
  5. String sessionCookie;
  6. CookieManager cookieManager;
  7. @Override
  8. protected void onPreExecute() {
  9. CookieSyncManager.createInstance(MainActivity.this);
  10. cookieManager = CookieManager.getInstance();
  11. sessionCookie = new PersistentConfig(getApplicationContext())
  12. .getCookieString();
  13. if (sessionCookie != null) {
  14. // delete old cookies
  15. cookieManager.removeSessionCookie();
  16. }
  17. super.onPreExecute();
  18. }
  19. protected Boolean doInBackground(Void... param) {
  20. // this is very important - THIS IS THE HACK
  21. SystemClock.sleep(1000);
  22. return false;
  23. }
  24. @Override
  25. protected void onPostExecute(Boolean result) {
  26. if (sessionCookie != null) {
  27. cookieManager.setCookie(Constants.ServerUrl.WEB_URL,
  28. sessionCookie);
  29. CookieSyncManager.getInstance().sync();
  30. }
  31. main_view.setScrollbarFadingEnabled(true);
  32. main_view.getSettings().setPluginsEnabled(true);
  33. main_view.getSettings().setPluginState(PluginState.ON);
  34. main_view.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
  35. WebSettings webSettings = main_view.getSettings();
  36. webSettings.setJavaScriptEnabled(true);
  37. // 设置可以访问文件
  38. webSettings.setAllowFileAccess(true);
  39. // 设置支持缩放
  40. webSettings.setBuiltInZoomControls(true);
  41. main_view.setWebViewClient(new WebViewClient() {
  42. @Override
  43. public void onPageStarted(WebView view, String url,
  44. Bitmap favicon) {
  45. // TODO Auto-generated method stub
  46. super.onPageStarted(view, url, favicon);
  47. }
  48. @Override
  49. public void onLoadResource(WebView view, String url) {
  50. // history();
  51. }
  52. });
  53. main_view.setWebChromeClient(new WebChromeClient() {
  54. public void onProgressChanged(WebView view, int progress) {
  55. //Change
  56. }
  57. });
  58. ShowUrlView(Constants.ServerUrl.INDEX);
  59. }
  60. }
时间: 2024-08-06 13:56:07

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

登录保存用户信息

做项目时,可能会将某些信息保存在session中,如登录等信息,这样方便在某些页面使用这些保存的信息. 要想保存这些信息,需要创建一个类,该类里面定义需要保存的变量等信息,当登录后就通过new一个该类来保存登录等信息,然后放在session中,需要用到这些信息时直接用例如EL表达式等取出来就OK了.例子如下: 1.保存用户信息的类 [java] view plain copy print? <span style="font-size:14px;"><span sty

登录保存登录凭证

默认情况下,跨源请求不提供凭据(cookie.HTTP认证及客户端SSL证明等).通过将withCredentials属性设置为true,可以指定某个请求应该发送凭据.如果服务器接收带凭据的请求,会用下面的HTTP头部来响应. Access-Control-Allow-Credentials: true 如果发送的是带凭据的请求,但服务器的相应中没有包含这个头部,那么浏览器就不会把相应交给JavaScript(于是,responseText中将是空字符串,status的值为0,而且会调用oner

Android:利用SharedPreferences实现自动登录

主要代码: public class LoginActivity extends Activity { private EditText username; private EditText userpassword; private CheckBox remember; private CheckBox autologin; private Button login; private SharedPreferences sp; private String userNameValue,pass

android开发之应用Crash自动抓取Log_自动保存崩溃日志到本地

http://blog.csdn.net/jason0539/article/details/45602655 应用发生crash之后要查看log,判断问题出在什么地方,可是一旦应用发布出去,就要想办法把用户的崩溃日志拿到分析. 所以要在发生crash之后抓取log,然后上传到服务器,方便开发者查看,现在都有很多第三方做这方面的服务,这里说下如何自己来实现. 其实原理很简单,应用出现异常后,会由默认的异常处理器来处理异常, 我们要做的就是把这个任务接管过来,自己处理异常,包括收集日志,保存到本地

Android实例-IdHTTP下载(并实现自动安装)(XE10+小米2)

http://www.cnblogs.com/FKdelphi/p/5416941.html Android实例-IdHTTP下载(并实现自动安装)(XE10+小米2) 相关资料: 1.群号 383675978 2.运行时提示"connection closed gracefully"错误原因与解决 http://www.delphifans.com/InfoView/Article_4588.html 3.编译时提示"[Exec Error] The command ...

Android实例-IdHTTP下载(并实现自动安装)

相关资料: 1.群号 383675978 2.运行时提示"connection closed gracefully"错误原因与解决 http://www.delphifans.com/InfoView/Article_4588.html 3.编译时提示"[Exec Error] The command ..... exited with code 1."错误原因不明,解决方法删除androidSDK,下载新版本的,引入新版本的SDK. 实例源码: 1 unit Un

Android编程实现WebView全屏播放的方法

这篇文章主要介绍了Android编程实现WebView全屏播放的方法,结合实例形式较为详细的分析了Android实现WebView全屏播放的布局与功能相关技巧,需要的朋友可以参考下! 本文实例讲述了Android编程实现WebView全屏播放的方法.分享给大家供大家参考,具体如下: 最近因为项目要用webview加载html5的视频,开始不能全屏播,做了很久才做出来!那按我的理解说下怎么实现全屏吧. 首先写布局文件activity_main.xml: <LinearLayout xmlns:an

Android开发之WebView详解

概述: 一个显示网页的视图.这个类是你可以滚动自己的Web浏览器或在你的Activity中简单地显示一些在线内容的基础.它使用了WebKit渲染引擎来显示网页,包括向前和向后导航的方法(通过历史记录),放大和缩小,执行文本搜索等. 需要注意的是:为了让你的应用能够使用WebView访问互联网和加载网页,你必须添加Internet的权限在Android Manifest文件中: <uses-permission android:name="android.permission.INTERNE

Android开发之黑名单来电自动挂断

本实例允许用户动态添加号码到黑名单,并实现黑名单来电自动挂断.程序通过创建PhoneStateListener监听器来监听TelephonyManager的通话状态来实现该功能. 由于自Android 10之后Android不再对外公开挂断电话的API,如果需要挂断电话必须使用AIDL与电话管理Service进行通信,并调用服务中的API实现结束电话. 为了调用远程的AIDL Service,开发者需要将Android源码中的如下两个文拷到指定位置: com.android.internal.t