关于Android 中如何共享原生httpClient获取的cookie并与webView共享

来源:互联网 发布:mac系统怎么设置校园网 编辑:程序博客网 时间:2024/04/28 09:08

首先是httpclient 获取的cookie,存储全局变量类似于application.sessionCookie=mycookie;

httpclient 处cookie是之前定义的成String 并在header中获取。

在webview 处需要无登录获取web内容时:

        //同步cookie
        CookieSyncManager.createInstance(this);
        CookieManager cookieManager=CookieManager.getInstance();
        String sessionCookie=MyApplication.SessionCookie;
        if(sessionCookie!=null){
        //String cookieString=sessionCookie;
        cookieManager.setCookie(myDetailUrl, sessionCookie);
        CookieSyncManager.getInstance().sync();
        }
        
        loadurl(myWebview,myDetailUrl); 


或者:

HttpClient登录:

DefaultHttpClient client =new DefaultHttpClient();

HttpGet get =new HttpGet(url);

HttpContext context =new BasicHttpContext();

CookieStore cookieStore =new BasicCookieStore();

context.setAttribute(ClientContext.COOKIE_STORE,cookiestore);

HttpResponse res=client.execute(get,ccontext);

if(res.getStatusline().getStatusCode==HttpStatus.SC_OK){

if(LoginSuccess()){

list cookies=cookieStore.getCookies();

if(!cookies.isEmpty()){

for(int i=cookie.size();i>0;i- -){

Cookie cookie=cookies.get(i-1);

if(cookie.getName().equalsIgnoreCase("jsessionid")){

application.mycookie=cookie;

}

}

}

}

WebView端使用:

String loadUrl=" ";

        //同步cookie
        CookieSyncManager.createInstance(this);
        CookieManager cookieManager=CookieManager.getInstance();
        String sessionCookie=MyApplication.SessionCookie;
        if(sessionCookie!=null){
         String cookieString=sessionCookie.getName+"="+sessionCookie.getValue()+"; dommain="+ sessionCookie.getDommain;
         cookieManager.setCookie(loadUrl, cookieString);
         CookieSyncManager.getInstance().sync();
        }
        
        loadurl(myWebview,loadUrl); 


0 0
原创粉丝点击