Android httpclient登录并使用cookie进行进一步处理

时间:2012-12-25 20:20:10

标签: android cookies httpclient

我正在开发一个包含登录活动和主要活动的应用程序。 如果用户第一次登录,则应用会保存用户名并传入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?

提前致谢!

1 个答案:

答案 0 :(得分: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

我希望对你有所帮助。