4

我正在开发一个应用程序,其中包括登录活动和主要活动。如果用户第一次登录,应用程序会保存用户名并传入 sharedPrefs。并且在下一次启动时,登录活动使用这些用户名和密码,如果服务器返回 true(在 xml 中,getEntity)主要活动意图开始。登录后,我想使用启动登录中设置的 cookie 与网页交互。据我在网上搜索,他们说我应该使用相同的 httpclient 以免丢失 cookie。我试过了,但无法管理。那么,我可以在不使用相同的 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

您可以考虑通过像这样的 Singleton 解决方案使用相同的 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() 。

如果还不够,可以自己管理cookies,BasicCookieStore类是一个很好的起点,可以查看这个线程: Android BasicCookieStore, Cookies and HttpGet

我希望它对你有帮助。

于 2012-12-25T20:49:18.560 回答