问题描述
在原生和h5混合开发的时候会遇到这么一个问题,用webview加载某个url时,你只是app登录了账号,但是网页却没有,所有会禁止访问此url,webview就会显示白屏。
所以要访问此url,需要带上cookie进行访问。这个cookie就是用app登录时所存储的cookie

实现方法和一些环境
网络请求方式
HttpsUrlConnection
这里既然用到了HttpsUrlConnection 说明我所加载的url是https协议
所以webview加载的时候会白屏
报错信息:

这是由于证书和域名不匹配,我的调试环境在内网服务器上,而证书是绑定在公网的域名上的。
所以需要webView跳过证书验证,

跳过证书验证
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
Log.e("app_name",error.toString());
handler.proceed();
}
});

然后设置cookie
cookie是在app使用HttpsUrlConnect发起登录请求时保存在本地的cookie

app登录成功后保存cookie到本地
SharedPreferences sharedPreferences = getSharedPreferences("login",MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
String cookieval = conn.getHeaderField("Set-Cookie");
editor.putString("all_cookie",cookieval);

是一个结构如下的值:

SESSION=f19b09e9-69b2-4ab4-9daf-ea224523a092; Path=/; Secure; HttpOnly
1
写入cookie
/**
*@param cookie 上面获取到的存储在本地的cookie字符串
*@param url 要加载的页面url
*/
private void setCookie(String cookie,String url) {
String StringCookie = cookie;
CookieManager cookieManager = CookieManager.getInstance();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
cookieManager.removeSessionCookies(null);
cookieManager.flush();
} else {
cookieManager.removeSessionCookie();
CookieSyncManager.getInstance().sync();
}
cookieManager.setAcceptCookie(true);
cookieManager.setCookie(url, StringCookie);
}

所有关键代码
SharedPreferences sharedPreferences = getSharedPreferences("login",MODE_PRIVATE);
String cookie = sharedPreferences.getString("session","");
String all_cookie = sharedPreferences.getString("all_cookie","");
Log.e("weibiao",all_cookie);
webView = findViewById(R.id.other_account_service_webview);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
Log.e("weibiao",error.toString());
handler.proceed();
}
});
initWebViewSettings();//webview的一些设置
setCookie(all_cookie,url);//在loadurl之前调用此方法
webView.loadUrl(url);

android webview带cookie访问url的更多相关文章

  1. Android webview 写入cookie的解决方法以及一些属性设置

    原文地址:https://www.2cto.com/kf/201703/616868.html Android webview 写入cookie的解决方法以及一些属性设置,webview怎么设置写入C ...

  2. 关于android webview 设置cookie的问题

    转自:http://blog.csdn.net/encienqi/article/details/7912733 我们在android中访问网络经常会用到Apache的HttpClient,用此类去访 ...

  3. Android webview中cookie增加/修改

    最近项目需求中,需要满足往webview传递cookie,而且cookie需要增加修改: public class MainActivity extends Activity { private We ...

  4. Android WebView保存Cookie登录

    因项目需要,需要在App中嵌入网页,使用Nativie方式登录,然后将cookie保存到WebView中,实现免登录功能.同步Cookie到WebView的方法网上有大量的参考资料,也可以参考下面的代 ...

  5. php使用curl带cookie访问一直失败求助

    最近需要批量向织梦后台导入一些数据,但是遇到了一个头疼的问题. 环境:xampp + 别人的dede后台. 首先,利用curl发送post请求登录login.php,成功,并且保存了cookie文件. ...

  6. 记一次使用 android 自带 WebView 做富文本编辑器之API、机型的兼容及各种奇葩bug的解决

    转载请声明出处(http://www.cnblogs.com/linguanh/) 目录 1,测试设备介绍 2,开源项目richeditor及CrossWalk的选择 3,遇到的bug及其解决方法 4 ...

  7. android webview里获取和设置cookie

    private class MyWebViewClient extends WebViewClient { public boolean shouldOverrideUrlLoading(WebVie ...

  8. HttpHelps类,用来实现Http访问,Post或者Get方式的,直接访问,带Cookie的,带证书的等方式,可以设置代理

    原文地址:http://blog.csdn.net/cdefg198/article/details/8315438 万能框架:http://www.sufeinet.com/forum.php?mo ...

  9. Android WebView存在跨域访问漏洞(CNVD-2017-36682)介绍及解决

    Android WebView存在跨域访问漏洞(CNVD-2017-36682).攻击者利用该漏洞,可远程获取用户隐私数据(包括手机应用数据.照片.文档等敏感信息),还可窃取用户登录凭证,在受害者毫无 ...

随机推荐

  1. Union-Find(并查集): Quick union算法

    Quick union算法 Quick union: Java implementation Quick union 性能分析 在最坏的情况下,quick-union的find root操作cost( ...

  2. tomcat 启动项目超时问题

    在开发工具中打开tomcat(F3),Timesouts下设置增加start秒数,然后保存重启项目.

  3. NOI.ac 模拟赛20181103 排队 翘课 运气大战

    题解 排队 20% 1≤n≤20,1≤x,hi≤201\le n\le 20, 1\le x,h_i\le 201≤n≤20,1≤x,hi​≤20 随便暴力 50% 1≤n≤2000,1≤x,hi≤1 ...

  4. JS各种案例效果

    1.进度条拖拽 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  5. Acwing P284 金字塔 题解

    Analysis 一棵树的每颗子树都对应着这棵树 DFS 序的一个区间.本题的序列虽然不是 DFS 序列,但也有该性质.本题中,我们以区间长度作为阶段, F[ l , r ] 表示序列 s[ l ~ ...

  6. Kafka 通过python简单的生产消费实现

    使用CentOS6.5.python3.6.kafkaScala 2.10  - kafka_2.10-0.8.2.2.tgz (asc, md5) 一.下载kafka 下载地址 https://ka ...

  7. 查看java的jar包源码

    1.jd-gui (windows环境) 下载地址 https://files.cnblogs.com/files/indifferent/jd-gui-windows-1.5.1.zip 下载并解压 ...

  8. 【MongoDB】在C#中使用

    一.MongoClient类 在2.10.0版本中引入了MongoClient类,同时在其API中也说明了Mongo类会在将来的版本中被MongoClient替换(Note: This class h ...

  9. noi.ac #37 dp计数

    #include<algorithm> #include<cstring> #include<cstdio> #include<iostream> ty ...

  10. P3723 【[AH2017/HNOI2017]礼物】

    被某大佬指出这是多项式板子!? 我们假设我们原始数列是\(a_i, c_i\), 旋转后的数列是\(a_i, b_i\),我们的增加量为x \[\sum_{i = 1}^n(a_i - b_i + x ...