Android WebView详解之自动登录

来源:互联网 发布:淘宝渔具店哪家好 编辑:程序博客网 时间:2024/06/16 02:22

目前该方法还没有测试成功,这里先做一下笔记,方便以后继续优化。

1、WebView的Java类中:

new HttpCookie(handler).start();//启动获取cookie方法并传入<span style="font-family: Arial, Helvetica, sans-serif;">handler。</span>

public Handler handler = new Handler(){public void handleMessage(android.os.Message msg) {CookieSyncManager.createInstance(MainActivity.this);CookieManager cookieManager = CookieManager.getInstance();cookieManager.setAcceptCookie(true);cookieManager.setCookie("http://www.gytaobao.cn:9001/zjt/", cookies);CookieSyncManager.getInstance().sync();webView.loadUrl("http://www.gytaobao.cn:9001/zjt/login.html"); //重新加载登录页面};};

2、获取cookie的Java类:
import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.ArrayList;import java.util.List;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpPost;import org.apache.http.cookie.Cookie;import org.apache.http.impl.client.AbstractHttpClient;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import android.os.Handler;import android.os.Message;import android.util.Log;public class HttpCookie extends Thread {private Handler handler;public HttpCookie(Handler handler){this.handler = handler;}@Overridepublic void run() {// TODO Auto-generated method stubHttpClient client = new DefaultHttpClient();HttpPost post = new HttpPost("http://www.gytaobao.cn:9001/zjt/login.do");//登陆后跳转页面的地址List<NameValuePair> list = new ArrayList<NameValuePair>();list.add(new BasicNameValuePair("user", "1"));//登录验证信息,key与服务端name相同list.add(new BasicNameValuePair("pas", "2"));try {post.setEntity(new UrlEncodedFormEntity(list));HttpResponse response = client.execute(post);if(response.getStatusLine().getStatusCode() == 200){AbstractHttpClient absClent = (AbstractHttpClient) client;List<Cookie> cookies = absClent.getCookieStore().getCookies();for(Cookie cookie:cookies){//打印信息与上面传入信息相同Log.e(">>>>>>>>>>>>>>>>>>>", "name=" + cookie.getName() + "password=" + cookie.getValue());Message message = new Message();message.obj = cookie;handler.sendMessage(message);return;}}} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch blocke.printStackTrace();}catch (ClientProtocolException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

其他获取cookie的方法:

private class MyWebViewClient extends WebViewClient {        public boolean shouldOverrideUrlLoading(WebView view, String url) {            webview.loadUrl(url);            return true;        }        public void onPageFinished(WebView view, String url) {            CookieManager cookieManager = CookieManager.getInstance();            String CookieStr = cookieManager.getCookie(url);            Log.e("sunzn", "Cookies = " + CookieStr);            super.onPageFinished(view, url);        }}


0 0
原创粉丝点击