我正在开发一个包含登录活动和主要活动的应用程序。 如果用户第一次登录,则应用会保存用户名并传入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?
提前致谢!
答案 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
我希望对你有所帮助。