1

このコードを使用してサーバーからデータを取得しようとしています

    DefaultHttpClient httpClient = new DefaultHttpClient();
    httpClient.getParams().setParameter(CoreProtocolPNames.USER_AGENT, USER_AGENT);
    HttpRequestRetryHandler retryhandler = new DefaultHttpRequestRetryHandler(6, true);

    httpClient.setHttpRequestRetryHandler(retryhandler);

    BasicCookieStore cookieStore = new BasicCookieStore();
    httpClient.setCookieStore(cookieStore);
    if(Build.VERSION.SDK_INT>8){
        CookieManager cookieManager = new CookieManager();
        cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
        CookieHandler.setDefault(cookieManager);
    }
    HttpGet httpget = new HttpGet(URL);
        HttpResponse response = httpClient.execute(httpget);


    HttpEntity entity = response.getEntity();
...

クライアントの Samsung Galaxy SII (android 4.0.3) を除いて、これまでに試したすべてのデバイスで正常に動作しています。サーバーの応答から、セッション Cookie が保存されていないようです。このバグを再現できず、これまでに試したすべてのことで解決しませんでした。手がかりはありますか?

編集: StrictMode ポリシーを無効にしているコードのブロックを削除しました (まだ問題があります)

4

2 に答える 2

2

同様の問題がありました。問題は、私の電話が間違った日付を引き起こしていたため、すべての Cookie が空だったという事実でした!!!

于 2012-07-13T15:02:40.027 に答える
1

何度も試行した後、BasicCookieStore が Cookie を追加していないことがわかりました。これは、すべての Cookie が不明な理由で期限切れになったためです (S2 のみ)。有効期限のチェックを無視する CookieStore の独自の実装を作成する必要がありました。これは一時的な修正です。これを解決するためのより安全でクリーンな方法を探しています。

于 2012-07-10T16:32:32.943 に答える