Android WebView加载服务端页面AJAX认证失败问题
来源:互联网 发布:快手淘宝优惠卷骗局 编辑:程序博客网 时间:2024/05/14 13:33
【场景描述】
通过Android 4.0.4 WebView内嵌服务端数据列表展示页面,且页面内点击某条数据需要Ajax动态加载数据明细。
说明:
1、服务端需要对客户端进行认证。
2、内嵌的Web页面采用同样的认证方式。
【实现方案】
1、客户端通过HttpClient调用服务端接口进行登录,然后再或者登录后服务端返回的Cookie信息并将其保存到全局静态变量。
DefaultHttpClient defaultHttpClient =new DefaultHttpClient();HttpResponse httpResponse = defaultHttpClient.execute(httpRequest);CookieStore cookieStore = ((AbstractHttpClient) defaultHttpClient).getCookieStore(); cookies=cookieStore.getCookies();
2、通过WebView加载页面的时候,遍历上一步缓存的Cookie,分别加入当前访问的URL。
CookieSyncManager.createInstance(this);CookieManager cookieManager = CookieManager.getInstance();cookieManager.setAcceptCookie(true);for (int i = 0; i < cookies.size(); i++) { Cookie cookie = cookies.get(i); cookieManager.setCookie(this.url, cookie.getName() + "=" + cookie.getValue()); }CookieSyncManager.getInstance().sync();mWebView.loadUrl(this.url);
【现象】
1、内嵌的列表查询页面可以正常访问,但点击明细查询,通过Ajax动态加载其它页面的时候服务端始终返回登录页面。
2、通过WireShark查看,发现内嵌的列表页面访问的HTTP报文里面有两个相同的Cookie name=JSessionid(Tomcat用这个保持回话),如下:(CSDN这个图片功能不好用)
【推理和分析】
1、尝试直接在Android浏览器打开服务端页面是OK的,且PC端浏览器打开也没有问题,不会出现两个JSessionid。
2、查询WebView API,最后分析出在设置Cookie的时候没有加“path”。(省略一堆推理过程,本人比较懒)
【解决方案】
直接在每个Cookie设置项里面增加“path=/”,问题即可解决,代码如下(红色部分):
for (int i = 0; i < cookies.size(); i++) { Cookie cookie = cookies.get(i); cookieManager.setCookie(this.url, cookie.getName() + "=" + cookie.getValue()<span style="color:#ff0000;"><strong>+";path=/;"</strong></span>); }
最后,希望对大家有所帮助。
1 0
- Android WebView加载服务端页面AJAX认证失败问题
- android 加载webview 自定义 失败页面
- Android Webview加载页面
- 前端webview,页面加载,发送Ajax请求,请求失败,https,http
- android,使用webView加载页面,界面空隙问题
- Android webview 加载html 页面缩放的问题
- 【Android】WebView加载https页面不能正常显示资源问题
- 【Android】WebView加载https页面不能正常显示资源问题
- Android WebView加载https页面不能正常显示资源问题
- android webview旋转屏幕导致页面重新加载问题
- android webview 页面加载拦截
- Android WebView页面加载优化
- Android WebView页面加载优化
- Android WebView页面加载优化
- Android WebView页面加载优化
- Android WebView页面加载优化
- Android WebView加载网页失败处理
- Android问题之webView第一次打开加载数据失败,第二次进入白屏问题
- http请求封装
- 线段树
- hdu 5167
- 翻译经典之《Cisco Lan Switching》第六章 理解生成树(一): 本章内容
- 《人人都是产品经理》读后感二
- Android WebView加载服务端页面AJAX认证失败问题
- Apache2.4+ PHP5.6 搭建PHP开发环境笔记
- Android之Handler更新UI总结
- 工厂设计模式
- HDOJ 1372 Knight Moves【BFS】
- 各种动态网页技术的特点与区别
- JDBC当中的批处理
- Windows平台备份裸设备文件
- 【Python基础教程】第10章 模块