您的位置:首页 > 移动开发

webview 模拟登陆

2015-10-19 12:14 351 查看
好像网上很多这个资料,不过全一点的还是stackoverflow上的一个回答,可能不同后台的实际情况也有点不同,权当作是做一个笔记好了:

private class CookieTask extends AsyncTask<Boolean, Boolean, Boolean>{
@Override
protected void onPreExecute(){
CookieSyncManager.createInstance(Activity.this);
CookieSyncManager.getInstance().startSync();
}

@Override
protected Boolean doInBackground(Boolean... params) {
try{
String cookie = doGetCookie();
}catch(Exception e){
return false;
}
if(cookie != null && cookie.length() > 0){
android.webkit.CookieManager cookieManager =
android.webkit.CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.setCookie(getDefaultURL(), cookie);
CookieSyncManager.getInstance().sync();
}else{
return false;
}
return true;
}

private String doGetCookie() throws Exception{
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(urlstr);
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");
}
}catch(Exception e){
throw e;
}finally{
if(connection != null){
connection.disconnect();
}
}
return cookie;
}

@Override
protected void onPostExecute(Boolean isSccuess){
super.onPostExecute(isSccuess);
if(isSccuess){
mWebView.loadUrl(getDefaultURL());
}
}
}

@Override
protected void onDestroy(){
CookieSyncManager.createInstance(Activity.this);
android.webkit.CookieManager cookieManager =
android.webkit.CookieManager.getInstance();
cookieManager.removeAllCookie();
CookieSyncManager.getInstance().sync();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android cookie