質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

0回答

4397閲覧

OkHttpを使ったAndroidでのCookie管理

callmichael

総合スコア71

Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2016/06/26 06:27

前提

昨日、こちらでcookieManagerについて質問させていただきました。

androidでのcookieManagerを使ったクッキーの保存

java.net.CookieManagerでAndroidアプリのCookie管理を実装しようとしていましたが、
getInstance()を実行できるのはandroid.webkit.CookieManagerで、
java.net.CookieManagerではエラーがでてしまいました。
android.webkit.CookieManagerに変更すると、全体的にエラーが発生してしまったため、
他の方法を模索していました。

OkHttp

色々と調べているうちに、OkHttpというものが使いやすいと思い、それを使って実装してみましたが、
ただ、前回同様にアプリを一度落とすと、保存されていたCookieがクリアされてしまいました。
下記のコードで実装したのですが、原因が特定できません。
ご教授いただけないでしょうか。よろしくお願いいたします。

java

1import android.app.Activity; 2import android.content.Context; 3import android.os.Bundle; 4import android.util.Log; 5import android.view.View; 6import android.widget.Button; 7 8import com.franmontiel.persistentcookiejar.PersistentCookieJar; 9import com.franmontiel.persistentcookiejar.cache.SetCookieCache; 10import com.franmontiel.persistentcookiejar.persistence.SharedPrefsCookiePersistor; 11 12import org.json.JSONArray; 13import org.json.JSONException; 14import org.json.JSONObject; 15 16import java.io.IOException; 17 18import okhttp3.CookieJar; 19import okhttp3.OkHttpClient; 20import okhttp3.Request; 21import okhttp3.Response; 22 23public class MainActivity extends Activity { 24 Context mContext = this; 25 OkHttpClient client; 26 27 28 @Override 29 protected void onCreate(Bundle savedInstanceState) { 30 super.onCreate(savedInstanceState); 31 setContentView(R.layout.activity_main); 32 // GET Weatherボタンを取得して、クリック処理を実装 33 Button btn = (Button) findViewById(R.id.tapHere); 34 CookieJar cookieJar = 35 new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(mContext)); 36 client = new OkHttpClient.Builder() 37 .cookieJar(cookieJar) 38 .build(); 39 40 btn.setOnClickListener(new View.OnClickListener() { 41 @Override 42 public void onClick(View view) { 43 new HttpResponsAsync() { 44 @Override 45 protected String doInBackground(Void... params) { 46 String res = null; 47 try { 48 49 String result = run("URL"); 50 JSONObject resJson = new JSONObject(result); 51 JSONArray weathers = resJson.getJSONArray("data"); 52 JSONObject weather = weathers.getJSONObject(0); 53 String test = weather.getString("test"); 54 String count = weather.getString("count"); 55 Log.d("ログ",test); 56 Log.d("ログ",count); 57 } catch(IOException e) { 58 e.printStackTrace(); 59 } catch(JSONException e) { 60 e.printStackTrace(); 61 } 62 return res; 63 } 64 }.execute(); 65 } 66 }); 67 } 68 // OKHttpを使った通信処理 69 public String run(String url) throws IOException { 70 Request request = new Request.Builder() 71 .url(url) 72 .build(); 73 74 Response response = client.newCall(request).execute(); 75 return response.body().string(); 76 } 77 78} 79 80

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問