ndroid webview里设置cookie
来源:互联网 发布:windows备份软件 编辑:程序博客网 时间:2024/05/14 04:53
但是在写android界面的时候又时不时的会用到一些WebView组件,这时候访问一个以经登录的页面的时候cookie设置就有个问题
在HttpClient中保存下来的Cookie怎么设置到WebView组件里,让WebView也保持住Cookie状态,也就是登录状态呢?
CookieSyncManager和CookieManager就是做这种事的,下面来看代码里怎么设置Cookie让WebView也保持登录状态:
- /**
- * 同步一下cookie
- */
- public static void synCookies(Context context, String url) {
- CookieSyncManager.createInstance(context);
- CookieManager cookieManager = CookieManager.getInstance();
- cookieManager.setAcceptCookie(true);
- cookieManager.removeSessionCookie();//移除
- cookieManager.setCookie(url, cookies);//cookies是在HttpClient中获得的cookie
- CookieSyncManager.getInstance().sync();
- }
在android里面在调用webView.loadUrl(url)之前一句调用此方法就可以给WebView设置Cookie
注:这里一定要注意一点,在调用设置Cookie之后不能再设置
- webView.getSettings().setBuiltInZoomControls(true);
- webView.getSettings().setJavaScriptEnabled(true);
这类属性,否则设置Cookie无效。
转自:http://blog.csdn.net/encienqi/article/details/7912733
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
谢了,这个问题解决了。
还有个小问题不解,为什么我不能实现切换用户呢(我将用户1注销后,重新登入,用户1自动登入了,可能是第一次登入的选择了自动登入,但怎么变成不自动登入呢),
1.在请求authorize接口的时候,加上forcelogin=true参数
2.在退出webview的时候清楚下cookie
CookieSyncManager.createInstance(getApplicationContext());
CookieManager.getInstance().removeAllCookie();
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
最近被这个项目折腾死了
客户端登录---客户端九宫格---webview内容功能模块
实现思路:
登录还是调用原来的servlet进行验证
- List<NameValuePair> myList = new ArrayList<NameValuePair>();
- myList.add(new BasicNameValuePair("STAFFID", username));
- myList.add(new BasicNameValuePair("PWD", password));
- HttpParams params = new BasicHttpParams();
- DefaultHttpClient client = new DefaultHttpClient(params);
- HttpPost post = new HttpPost(actionURL);
- HttpResponse response = null;
- BasicResponseHandler myHandler = new BasicResponseHandler();
- String endResult = null;
- try { post.setEntity(new UrlEncodedFormEntity(myList)); }
- catch (UnsupportedEncodingException e)
- { e.printStackTrace(); }
- try { response = client.execute(post); }
- catch (ClientProtocolException e)
- { e.printStackTrace(); }
- catch (IOException e)
- { e.printStackTrace(); }
验证成功后保存cookie并保存到SharedPreferences
//获取cookie信息
- List<Cookie> cookies = client.getCookieStore().getCookies();
- if (cookies.isEmpty()) {
- Log.i(TAG, "-------Cookie NONE---------");
- } else {
- for (int i = 0; i < cookies.size(); i ) {
- //保存cookie
- cookie = cookies.get(i);
- Log.d(TAG, cookies.get(i).getName() "=" cookies.get(i).getValue() );
- if(cookies.get(i).getName().equals("loginStaffId")) {
- //保存登录信息,下次无需登录
- String PREFS_NAME = "nma.qztc.com";
- SharedPreferences settings = v.getContext().getSharedPreferences(PREFS_NAME, 0);
- SharedPreferences.Editor editor = settings.edit();
- editor.putString("staff_id", username);
- editor.putString("pwd", password);
- editor.commit();
- return true;
- }
-----------------------------------------------
将cookie信息带入到webview中,之前总是出现有时cookie读取成功有时不成功,找了半天发现将
cookieManager.removeSessionCookie();
这句去掉就好了,暂时还没有出现什么问题,由于原来的web应用是采用session验证,所以在读取cookie成功后也将session信息写入,这样就双保险了
//设置cookie信息
- Cookie sessionCookie = OnLoginListenerImpl.cookie;
- CookieSyncManager.createInstance(this);
- CookieManager cookieManager = CookieManager.getInstance();
- if (sessionCookie != null) {
- //cookieManager.removeSessionCookie();
- cookieString = sessionCookie.getName() "=" sessionCookie.getValue() "; domain=" sessionCookie.getDomain();
- Log.d("----nma cookie-----",cookieString);
- //Log.d("----url-----",getString(getResources().getIdentifier(url,"string", getPackageName())));
- cookieManager.setCookie(getString(getResources().getIdentifier(url,"string", getPackageName())), cookieString);
- CookieSyncManager.getInstance().sync();
- }
转自:http://blog.csdn.net/se_zhehao/article/details/6327737
- ndroid webview里设置cookie
- android webview里设置cookie
- android webview里设置cookie
- android webview里设置cookie
- android webview里设置cookie
- iOS 设置webView cookie
- 【Android】WebView设置Cookie
- webView设置cookie
- android webview 设置 Cookie
- webView设置Cookie
- WebView设置Cookie
- Android WebView设置cookie
- OkHttpClient设置Cookie到WebView
- webView怎么保存设置Cookie
- webView中设置cookie无效
- webView怎么保存设置Cookie
- webView怎么保存设置Cookie
- 关于webview设置cookie的问题
- andriod 4.1 隐藏虚拟按键和导航栏
- Mysql服务器的主从复制配置
- linux lsof详解
- log4j使用
- OC对象关联~objc_setAssociatedObject/objc_getAssociatedObject
- ndroid webview里设置cookie
- Number Triangles
- 请注意交换市场
- eclipse+was debug
- c#操作excel方式一:stream简单读写excel
- Keil中 Program Size: Code RO-data RW-data ZI-data 所代表的意思
- iOS如何植入admob广告
- Oracle创建用户、表空间、导入导出、...命令
- Inotify: 高效、实时的Linux文件系统事件监控框架