4

ログイン アクティビティとメイン アクティビティを含むアプリを開発しています。ユーザーが初めてログインすると、アプリはユーザー名を保存し、sharedPrefs に渡します。そして、次の起動時に、ログイン アクティビティはこれらのユーザー名とパスワードを使用し、サーバーが true (xml で getEntity) を返した場合、メイン アクティビティ インテントが開始されます。ログイン後、スタートアップ ログインで設定された Cookie を使用して Web ページとやり取りしたい。Web を検索した限りでは、Cookie を失わないようにするには、同じ httpclient を使用する必要があるとのことです。私はそれを試しましたが、管理できませんでした。では、同じ httpclient を使用せずに Cookie を使用できますか?

私のアプリの一般的なロジック:

httpclient.execute("http://www.abc.com/index.php?process=login&user="+variable1+"&pass="+variable1); 

//here I get the entity of this response and I parse that return value, after that, if(login==true)--> go on...
//here I have to read all page from website which is protected by user authentication(by cookies).(ex:index.php?process=getmymessages)
//But I did not manage that. At this point what is your suggestions?

前もって感謝します!

4

1 に答える 1

3

次のようなシングルトン ソリューションを介して同じ HttpClient を使用することを検討できます。

public enum MyAppHttpClient {
    INSTANCE;

    private HttpClient configuredHttpClient = null;

    public HttpClient getConfiguredHttpClient() {
        if (configuredHttpClient == null) {
            try {
                HttpParams params = new BasicHttpParams();
                HttpConnectionParams.setConnectionTimeout(params, 5000);
                HttpConnectionParams.setSoTimeout(params, 5000);
                configuredHttpClient = new DefaultHttpClient(params);
            } catch (Exception e) {
                configuredHttpClient = new DefaultHttpClient();
            }
        }

        return configuredHttpClient;
    }
}

必要な場所ならどこでも MyAppHttpClient.INSTANCE.getConfiguredHttpClient() を呼び出すことができます。

不十分な場合は、Cookie を自分で管理できます。BasicCookieStore クラスは出発点として適しています。このスレッドを確認できます: Android BasicCookieStore、Cookies、および HttpGet

お役に立てば幸いです。

于 2012-12-25T20:49:18.560 に答える