2012-05-15 3 views
12

Android CookieManager 클래스에는 방법이 있습니다 (getCookie(String url)).
올바른 URL을 알아야합니다.
CookieManager에있는 모든 쿠키를 가져 와서 URL을 가져 오는 방법이 있습니까? 몇 가지는 getCookies ?? getCookie(String url) 전화를 내 url에 잘못 입력했는지 다시 한 번 확인하는 것입니다. 쿠키를 호출 할 때 쿠키가 표시되지 않습니다.
여기에 URL에 IP address이 완전하게 전달됩니다. 이런 식으로 뭔가 : "xx.x.x.x"CookieManager android에서 모든 쿠키를 얻는 방법?

감사
미아

+0

내가 성공적인 login- 간단한 후 웹뷰에서 쿠키를 추출하기 위해 노력하고는 - 문자열 cookieString = CookieManager.getInstance()의 getCookie ("xx.xxx) 4.2 – mia

답변

0

당신은 use reflection 쿠키지도를 볼 수 있습니다. 4.0.3에서 mCookieMap이라고 불립니다 (이전 릴리스에서도 가능). 유형은 Map>입니다.

mCookieMap을 사용하지 않으면 다른 장치 또는 OS 버전에서 깨질 위험이 있기 때문에 좋은 방법은 아니지만 CookieManager는 방문한 URL을 공개적으로 알 수있는 방법을 제공하지 않습니다.

+0

쿠키. .2 기본적으로 저장되므로 작동하지 않습니다. http://androidxref.com/4.2.2_r1/xref/frameworks/base/core/java/android/webkit/CookieManagerClassic.java – plinehan

+1

결국 깨질 것이라는 것을 알고있었습니다. :-) –

3

Android 애플리케이션에서 java.net 패키지와 함께 CookieManager를 사용했으며 매력적으로 작동합니다. 여기에 코드입니다 :

import java.net.CookieHandler; 
import java.net.CookieManager; 
import java.net.CookiePolicy; 
import java.net.HttpCookie; 
import java.util.List; 

private class MyCookieManager 
{  
    private CookieManager mCookieManager = null; 

    MyCookieManager() { 
     mCookieManager = new CookieManager(); 
     mCookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL); 
     CookieHandler.setDefault(mCookieManager); 
    } 

    private List<HttpCookie> getCookies() { 
     if(mCookieManager == null) 
      return null; 
     else 
      return mCookieManager.getCookieStore().getCookies(); 
    } 

    public void clearCookies() { 
     if(mCookieManager != null) 
      mCookieManager.getCookieStore().removeAll(); 
    } 

    public boolean isCookieManagerEmpty() { 
     if(mCookieManager == null) 
      return true; 
     else 
      return mCookieManager.getCookieStore().getCookies().isEmpty(); 
    } 


    public String getCookieValue() { 
     String cookieValue = new String(); 

     if(!isCookieManagerEmpty()) { 
      for (HttpCookie eachCookie : getCookies()) 
       cookieValue = cookieValue + String.format("%s=%s; ", eachCookie.getName(), eachCookie.getValue()); 
     } 

     return cookieValue; 
    } 

} 
+0

@stan getCookieValue()를 사용하려면 MyCookieManager 클래스의 객체를 만들고 생성자를 호출해야하며 CookieManager의 새로운 인스턴스가 쿠키가 저장되지 않은 상태로 생성 될 때마다 어떻게 쿠키를 가져올 수 있습니까? 내가 이전에 쿠키를 저장 한 기본 CookieManager? –

+0

@HarshalBhatt, 그것은 당신이 만들고 응용 프로그램에서 'MyCookieManager'의 단일 인스턴스를 유지한다고 가정합니다. 어쨌든 모든 인스턴스는 보통 기본 쿠키 저장소 (또는 쿠키 관리자의 특정 저장소를 제공하기 위해 원본을 변경하는 경우 사용자 지정 저장소)에서 동일한 쿠키 집합을 반환해야합니다. – Stan

관련 문제