1

サービス内で次のコードを実行します。

public class MainService extends Service {
....
....

  CookieManager mCookieManager = CookieManager.getInstance();
  CookieSyncManager mCookieSyncManager = CookieSyncManager.createInstance(mContext);
  if (mCookieSyncManager != null) {
     mCookieSyncManager.sync();
  }

  AsyncHttpClient myClient = new AsyncHttpClient();
  PersistentCookieStore myCookieStore = new PersistentCookieStore(mContext);
  myClient.setCookieStore(myCookieStore);
  myClient.setUserAgent("my service");

  myClient.get("http://example.com/mypage/", new AsyncHttpResponseHandler() {
    ...
  }
  ...
...
}

ウェブサーバーのログを確認すると、リクエスト ヘッダーに Cookie が存在することがわかります。
ただし、これらの Cookie は古い Cookie です。

この AndroidAsyncHttp コードもアクティビティから実行します。同じ古い Cookie が送信されます。

しかし、WebView で現在の Cookie を出力すると、新しい Cookie が表示されます。

AndroidAsyncHttp で WebView の Cookie を送信するにはどうすればよいですか?

4

1 に答える 1

2

Cookie を設定する前に Cookie をクリアする

myCookieStore.clear();

私の経験では、その CookieManager は必要ありません。私はこれしか使いません。

AsyncHttpClient myClient = new AsyncHttpClient();
PersistentCookieStore myCookieStore = new PersistentCookieStore(mContext);
// clear cookie to make the fresh cookie, to ensure the newest cookie is being send
myCookieStore.clear();
// set the new cookie
myClient.setCookieStore(myCookieStore);
myClient.get("http://example.com/mypage/", new AsyncHttpResponseHandler() {
...
}
于 2014-06-06T02:46:34.813 に答える