入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

关于webview加载h5出现需要登录才能访问的解决办法

创建时间:2018-04-12 投稿人: 浏览次数:122

当你的app里需要嵌入webview,但是webview在load完毕url之后,提示你“您还未登录,没有访问权限”的时候,方不方?反正我是有点方。。。。为什么会这么提示呢,牵扯到一个玩意:cookie。本文是为了解决广大同胞的问题而写,至于cookie,下一篇我再解释。

好了,下面直接上解决办法

我的解决办法是,既然你提示要登录,那我就在加载url之前,先模拟登录一次,保存登录接口的cookie,将登录的cookie保存到url中,再去加载,代码如下:

StringBuilder builder = new StringBuilder();
builder.append("n=").append("account");
builder.append("&p=").append("password");
byte[] data = builder.toString().getBytes("UTF-8");
URL url=new URL(loginUrl);
HttpURLConnection connection =
        (HttpURLConnection) url.openConnection();
try{
    connection.setDoOutput(true);
    connection.setRequestProperty("Content-Type",
            "application/x-www-form-urlencoded");
    connection.setRequestProperty("Content-Length",
            Integer.toString(data.length));
    connection.setRequestMethod("POST");
    connection.setInstanceFollowRedirects(false);
    OutputStream os = connection.getOutputStream();
    os.write(data);
    os.close();
    int aRstCode=connection.getResponseCode();
    if (aRstCode == HttpURLConnection.HTTP_OK){
        cookie = connection.getHeaderField("Set-Cookie");
    }

获取到cookie之后,把cookie通过cookieManager.setCookie()方法添加到url中:

if(cookie != null && cookie.length() > 0){
    android.webkit.CookieManager cookieManager =
            android.webkit.CookieManager.getInstance();
    cookieManager.setAcceptCookie(true);
    cookieManager.setCookie(loadUrl, cookie);
    CookieSyncManager.getInstance().sync();
}

再用webview去加载url,就没问题啦。

ps:模拟登录最好是在异步任务(asynctask等)中,因为主线程中访问网络会报错哦,你懂得的。


声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像