关于webview加载h5出现需要登录才能访问的解决办法
当你的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。
- 上一篇:没有了
- 下一篇:没有了
