2016-06-14 8 views
0

PersistentCookieJarで問題が発生しました。私はOKHTTP3で静的なHTTPクライアントを実装したいと思います。これにより、私はさまざまなメソッドをアクティビティから呼び出して、SharedPrefsへの応答からトークンを保存できます。私は...のGithub上のドキュメントPersistentCookieJarからSharedPrefsへOKHTTP3での応答

ClearableCookieJar cookieJar = 
      new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(context)); 

    public static OkHttpClient client = new OkHttpClient.Builder() 
      .cookieJar(cookieJar) 
      .build(); 

を以下これを行うと...私はエラー「非静的フィールド 『を取得するのCookieJar』静的コンテキストから参照することはできません」。 OK!確かに、私は別のソリューションを試したので、AndroidStudioは私に(静的でないクラスを作るように)教えてくれましたが、問題を解決するのに役立つものは何もありません。これを解決するもう一つの方法(Android Studioが言っているように)は、ClearableCookieJarを静的に宣言してから、コンテキストを取得することに問題があります。

答えて

0

問題は、一方が静的で他方は静的でないという事実です。したがって、あなたはそれが正常に動作する必要があります(Androidのメーカーが提案のように)あなたのOkHttpClientからstaticを削除する場合:あなたがOkHttpClientが最初の場所でstaticになりたい理由

ClearableCookieJar cookieJar = 
      new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(context)); 

OkHttpClient client = new OkHttpClient.Builder() 
      .cookieJar(cookieJar) 
      .build(); 

問題を今すぐです。アプリケーションの複数の場所からクライアントにアクセスしたい場合は、Applicationクラスで初期化しないでください。

public class CustomApplication extends Application { 

    private static OkHttpClient sOkHttpClient; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 

     initializeClient(); 
    } 

    private void initializeClient() { 
     ClearableCookieJar cookieJar = new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(context)); 

     sOkHttpClient = new OkHttpClient.Builder() 
       .cookieJar(cookieJar) 
       .build(); 
    } 

    public static OkHttpClient getClient() { 
     return sOkHttpClient; 
    } 

} 

それとも空想を取得したい場合は、Daggerのように、依存性注入フレームワークを実装することができます。

+0

私はこれを行うと( 'Application'クラスで初期化します)、同じエラー '非静的フィールド' mOkHttpClient 'を静的コンテキストから参照できません:/ – Andy

+0

@Andyごめんなさい、私は 'mOkHttpClient'の' static'修飾子を忘れてしまいました。 – Bryan

関連する問題