android 服务器sessionid,Android用WebView获取sessionid保持登录状态
我们需要和web服务器保持登录状态。所以我们需要记录sessionid;
我们将网页用webview加载之后,用CookieManager 来获取本地的cookies 。然后设置到webview里面去。
我们可以在下面这个回调方法中获取到。并且保存到sharedpreferences中去
然后我们在mWebView.loadUrl(url);之前设置一下cookies
就基本套路来说就是这样。不过在设置之后 不能在添加:
// 支持javascript
mWebView.getSettings().setJavaScriptEnabled(true);
// 设置出现缩放工具
mWebView.getSettings().setBuiltInZoomControls(false);
否则设置的cookies不起作用。。。。。
上个完整代码 :
布局文件中:
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="test.yihan.testweb.MainActivity">
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
activity中:
public class MainActivity extends AppCompatActivity {
String cookies = "";
SharedPreferences sp;
String url = "http://shop.beishute.com.cn/wx_beishute_rtm/index.php/Home/About/index.html";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建一个sharedpreferences
sp = getSharedPreferences("aaa", MODE_PRIVATE);
WebView mWebView = (WebView) findViewById(R.id.webview);
// 自适应屏幕
mWebView.getSettings()
.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
mWebView.getSettings().setLoadWithOverviewMode(true);
// 支持javascript
mWebView.getSettings().setJavaScriptEnabled(true);
// 设置可以支持缩放
mWebView.getSettings().setSupportZoom(false);
// 设置出现缩放工具
mWebView.getSettings().setBuiltInZoomControls(false);
// 扩大比例的缩放
mWebView.getSettings().setUseWideViewPort(false);
mWebView.setWebChromeClient(new MyWebChromeClient());
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url); // 在当前的webview中跳转到新的url
//获取cookies
CookieManager cm = CookieManager.getInstance();
String cookies = cm.getCookie(url);
sp.edit().putString("cook", cookies).apply();
return true;
}
});
synCookies(this, sp.getString("cook", ""));
mWebView.loadUrl(url);
}
/**
* 同步一下cookie
*/
public void synCookies(Context context, String url) {
CookieSyncManager.createInstance(context);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
// cookieManager.removeSessionCookie();//移除
cookieManager.setCookie(url, cookies);
CookieSyncManager.getInstance().sync();
}
final Context myApp = this;
final class MyWebChromeClient extends WebChromeClient {
@Override
public boolean onJsConfirm(WebView view, String url, final String message, final JsResult result) {
new AlertDialog.Builder(myApp)
// .setTitle("App Titler")
.setMessage(message)
.setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if (message.equals("确定要退出吗?")) {
result.confirm();
finish();
} else {
result.confirm();
}
}
})
.setNegativeButton(android.R.string.cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
result.cancel();
}
})
.create()
.show();
return true;
}
}
}
!!! 我们需要注意不用忘了网络权限
android 服务器sessionid,Android用WebView获取sessionid保持登录状态相关推荐
- Android服务器django,Android发送发送请求到django服务器csrf失败
我想我的 Android应用程序能够发送一些信息到我的django服务器.所以我做的Android应用程序发送一个发布请求到mysite /上传页面,django的这个页面的视图将基于post数据工作 ...
- android服务器 性能,Android性能优化(中)
Android性能优化 在上一篇中介绍了性能优化的概念.内存泄漏和性能优化方式 Android性能优化(上) 我们继续说说Android性能优化 数据库性能优化 索引 简单的说,索引就像书本的目录,目 ...
- android服务器app,Android APP中使用NanoHTTPD搭建轻量级服务器
最近接到一个需求,由后台主动给APP发送消息,且对实时性的要求较高. 经过探索评估,发现NanoHTTPD很适合,非常轻便. 本文主要内容如下: 1.依赖导入: 2.设置IP和端口: 3.启动服务和后 ...
- android服务器接口测试,Android单元测试:网络接口测试
在平日的开发中,我们用后台写好给我们接口去获取数据.虽然我们有一些请求接口的工具,可以快速的拿到返回数据.但是在一些异常情况的处理上就不太方便了.我列出以下几个痛点: 快速的查看返回数据与数据的处理. ...
- 【Android工具】安卓手机轻松获取硬件数据和状态信息
可以获取的硬件信息和软件如上图所示. 硬件中的传感器比较好玩,可以获取手机上所有传感器的数据,还能绘制出变化曲线图 总体来说功能比较多,软件界面也非常干净,就是没有移动网络信号和wifi网络信号强度的 ...
- android 服务器201,Android端i-jetty服务器开发(八)
http://blog.csdn.net/kongxx/article/details/7237034 Jetty实战之 嵌入式Jetty运行web app 1. 运行标准的war文件 1.1 首先找 ...
- 服务器安装什么文件可以获取密码,服务器ssh密码在哪获取
服务器ssh密码在哪获取 内容精选 换一换 获取登录密码使用公共镜像创建的云服务器,默认已经安装一键式重置密码插件.如果您忘记密码或密码过期,可以通过重置密码重新设置云服务器登录密码.重置密码使用公共 ...
- android 获取sessionid
android与web服务器要在同一session下通信的问题. 在解决问题前先回顾下Session与Cookie: Cookie和Session都为了用来保存状态信息,都是保存客户端状态的机制,它们 ...
- android url webview,android - webview获取到当前页面的url
android - webview获取到当前页面的url 2017-10-23 08:54 访问量: 2958 分类: 技术 使用 webview.getUrl() 即可. 可以完美返回 a.com ...
最新文章
- ETSI GS MEC 011,Edge Platform Application Enablement API
- echarts地图的基本使用配置
- linux gpu 电脑推荐,System76推出具有RTX GPU更大显示器的Oryx Pro Linux笔记本电脑
- KNN回归python实现
- 回顾2020年那些“领域第一本”,每一本都强烈推荐!
- 【vuejs面试题】务必熟知的vuejs面试题「务必收藏」
- myeclipse修改maven settings
- oracle中主键自增长,Oracle中给主键设置自增长
- 中文(语音结果)的文本纠错综述 Chinese Spelling Check
- Mac环境安装Win虚拟机
- 深度学习相关的硬件配置
- 明日之后最新服务器开服时间,明日之后什么时候开服 新服开区详解
- Silverlight游戏设计(Game Design):(十三)帝国时代II (Demo) 之 “战争艺术”②
- canvans——合并图片
- #Paper Reading# Efficient Heterogeneous Collaborative Filtering without NS for Recommendation
- 离散学习--笛卡尔积
- 从1,3,5,7,9,11,13,15中选3个数(选择可重复)作和得30
- 诺贝尔经济学奖计算机,诺贝尔经济学奖获得者克鲁格曼曾经指出:在经历数千年之后,现代社会运用大型计算机,对成千上万的因素进行...
- 51单片机学习笔记之数码管工作原理
- 硬件设计——不一二电路设计(电源电路、接口电路、时钟电路)