前提
昨日、こちらで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
あなたの回答
tips
プレビュー