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

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

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

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

Android

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

7678閲覧

android cookie取得できない

ttt1212

総合スコア16

Cookie

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

Android

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2015/08/19 08:11

WebViewからcookieを取得し、APIに取得した値を渡す処理を書きています。

APIへは接続されているようですが、cookieの中身が空のようです。
以下にコードを示したので、ご指摘お願いいたします。

@Override public void onPageFinished(WebView view, String url) { //自ドメインの時CookieをCheakする if (url.indexOf("URL") > -1) { //文字列でCookieを取得 CookieManager mCookieManager = new CookieManager(); CookieStore mCookieStore = mCookieManager.getCookieStore(); List<HttpCookie> cookieList = mCookieStore.getCookies(); System.out.println("onPageFinished - " + url); for (int i = 0; i < cookieList.size(); i++) { String cookieName = cookieList.get(i).getName(); //JSESSIONID,CCH String cookieValue = cookieList.get(i).getValue(); }

ちなみに、下記の方法で取得しようとすると、getInstance()の部分でエラーになってしまいます。

@Override public void onPageFinished(WebView view, String url){ // Cookieを取得 String[] cookies = CookieManager.getInstance().getCookie(url).split(";"); for(String cookie : cookies){ Log.d("", cookie); } } ※http://qiita.com/datsnet/items/a6881d685e5161005a94参照

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

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

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

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

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

guest

回答1

0

ベストアンサー

CookieManager#getInstanceで端末共有のインスタンスを取得するか、独自でnewする二種類のインスタンスを取得方法があるようです。これを踏まえてコードを見てみると、下記のことが考えられます。
[コード1について]
newして新規にインスタンスを作成しているので中身が空っぽになっていることが考えられます。
[コード2について]
端末共有のインスタンスを取得しているので、中に情報が入っているはず。しかし、取得出来ない。
そこで下記の2点を確認して下さい。
・他のコードでookieManagerの中をクリアする処理を行っていないか。
・CookieManager.getInstance().getCookie(url)がnullを返していないか。

投稿2015/08/19 08:32

yona

総合スコア18155

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

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

ttt1212

2015/08/19 09:49

ご回答ありがとうございます。 コード1については、新規で作らず書きましたが、やはりcookieのログがでませんでした。 コード2についてですが、実行する前からgetInstance()が赤字になっているため、実行できません。そのため、何かを返すところまでたどり着いていません。 下記に全体のコードを示します、、、。 ``` public class LoginActivity extends Activity { private WebView myWebView; TextView text_view; EditText text_input; ProgressDialog dialog; @Override protected void onCreate(Bundle savedInstanceState) { CookieHandler.setDefault(new CookieManager()); ((CookieManager)CookieHandler.getDefault()).setCookiePolicy(CookiePolicy.ACCEPT_ALL); super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); myWebView = (WebView) findViewById(R.id.myWebView); myWebView.loadUrl("URL"); myWebView.getSettings().setJavaScriptEnabled(true); myWebView.getSettings().setBuiltInZoomControls(false); myWebView.setHorizontalScrollBarEnabled(false); text_view = (TextView) findViewById(R.id.textView1); text_input = (EditText) findViewById(R.id.editText1); myWebView.setWebViewClient(new WebViewClient() { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { Toast.makeText(LoginActivity.this, "読み込み開始", Toast.LENGTH_SHORT).show(); } //ページ読み込みエラー時の処理 @Override public void onReceivedError(WebView view, int errorCode, String description, String url) { Toast.makeText(LoginActivity.this, "読み込みエラー", Toast.LENGTH_SHORT).show(); } @Override public void onPageFinished(WebView view, String url) { //自ドメインの時CookieをCheakする if (url.indexOf("domin") > -1) { //文字列でCookieを取得 CookieManager mCookieManager = (CookieManager)CookieHandler.getDefault(); CookieStore mCookieStore = mCookieManager.getCookieStore(); List<HttpCookie> cookieList = mCookieStore.getCookies(); System.out.println("onPageFinished - " + url); for (int i = 0; i < cookieList.size(); i++) { String cookieName = cookieList.get(i).getName(); System.out.println("cookieName"+cookieName); String cookieValue = cookieList.get(i).getValue(); System.out.println("cookieValue"+cookieValue); } httpGet(); } } }); } ```
yona

2015/08/19 09:54

コード2についてですが、エラー内容を教えてください。 コード1については少し考えます。
yona

2015/08/19 10:07

コード1について 純正Javaで使用されるCookieManagerとWebViewで使用されるCookieManagerはまったくの別物です。内部の情報は共有されていないため、自身で共有するしかないようです。 コード2について コード1で使用されたimportがそのまま残っていたため、未定義なメソッドです等のエラーが出ていないでしょうか。その場合はimportをandroid.webkit.CookieManagerに変更して試してみてください。
ttt1212

2015/09/19 06:06

返信遅れてしまい申し訳ございません。 cookiemanagerの使い方が少し間違っていたようです。 いろいろとアドバイスいただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問