こんにちは、私は現在、レトロフィットを使用してネットワーク呼び出しを行う 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);
});
……
前もって感謝します。