2012-05-15 13 views
12

Android CookieManagerクラスの場合、方法は - getCookie(String url)です。
これについては正しいURLを知る必要があります。
すべてのクッキーをCookieManagerに取得してURLを取得する方法はありますか? 何かのようなgetCookies ?? これはgetCookie(String url)コールのために私が何かを間違って与えているかどうかを再確認することです。url 私は同じものを呼び出すときに私はクッキーを取得していません。
URLに完全にIP addressを渡しています。このような何か:"xx.x.x.x"CookieManager androidからすべてのCookieを取得するには?

おかげ
ミア

+0

私は成功し、そのシンプルlogin-後のWebViewからクッキーを抽出しようとしています - 文字列cookieString = CookieManager.getInstance()getCookie(「xx.xxx); 4.2で – mia

答えて

0

あなたはuse reflection cookieマップを見るためにすることができます。 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'の単一のインスタンスを保持することが想定されています。とにかく、すべてのインスタンスは通常、デフォルトのCookieストア(またはCookieManagerコンストラクタ内の特定のストアを提供するためにソースを変更する場合はカスタムストア)から同じCookieセットを返す必要があります。 – Stan

関連する問題