こんにちは、私は現在、レトロフィットを使用してネットワーク呼び出しを行う Android アプリケーションを開発しています。ここでは、私の要件の概要について説明します。
1.Facebookのアクセストークンを取得し、サーバーに送信します。 2.サーバーは、応答にセッション Cookie を設定します。 3.今後のすべてのリクエストで、セッション Cookie が返送されます。
現在の問題:
ユーザーがアプリを (さまざまなアクティビティで) 使用していない限り、セッション Cookie を有効に保つことができます。ただし、ユーザーがアプリを終了すると、Cookie は削除されます。これらの Cookie は、Applicationクラスを超えるクラス内で宣言しました。アプリが終了した後でも、これらのセッション Cookie を維持する必要があります。ユーザーが再びアプリケーションを開いたときに、それらをさらに処理するために使用できるようにします。
ここに、アプリケーションに実装したコード スニペットをいくつか示します。
AppController.java (Application クラスのサブクラス)
public class AppController extends Application { プライベート静的 AppController mInstance; プライベートな静的 OkHttpClient クライアント。 プライベート静的 CookieManager cookieManager; プライベートな静的コンテキスト コンテキスト。 プライベート スタティック AviyalApiService api; // すべての GET と POST を持つカスタム インターフェイス プライベート静的 OkClient okClient; プライベート静的 RestAdapter アダプター。 @オーバーライド public void onCreate() { super.onCreate(); クライアント = 新しい OkHttpClient(); cookieManager = AppController.getCookieManager(); client.setCookieHandler(cookieManager); client.setFollowRedirects(真); client.setFollowRedirects(真); okClient = 新しい OkClient(クライアント); CookieManager cookieManager = new CookieManager(); cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL); CookieHandler.setDefault(cookieManager); アダプタ = 新しい RestAdapter.Builder() .setEndpoint(context.getResources().getString(R.string.base_url)) .setClient(okClient).build(); } .....
これは、サービスを呼び出す方法のスニペットです。
class LoginActivity は Activity を拡張します{ .... @オーバーライド protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); .... ApiService api = AppController.getApi(); api.fbLogin(tok, new Callback() { @オーバーライド public void success(FbLogin fbLogin, Response レスポンス) { //成功 } @オーバーライド public void failure(RetrofitError エラー) { MyFunctions.showAlertDialogue(LoginActivity.this, "ログインに失敗しました", error.getMessage(), "OK", null); }); ……
前もって感謝します。