在我的应用程序中,我试图访问一些web服务。我正在进行基于表单的身份验证并获得授权连接。如果我通过了授权,我希望打开新活动,但DefaultHttpClient的任何新实例都获得了未经授权的权限。
问题是:
1)如何通过活动传递此连接
2)或者如何保持连接的正确授权,如果我想到httpclient拦截器,我就走对了?如果,是的,那么第一个问题仍然存在,但是pass cookiestore数据的相关性。
最佳答案
您几乎应该总是创建一个类来处理您的http请求,这个类的最常见名称是connectionmanager。
你应该用单重设计模式。这样就可以正确处理您的连接。
public class ConnectionManager {
private static ConnectionManager instance = null;
private DefaultHttpClient client;
private ConnectionManager() {
client = new DefaultHttpClient(...);
}
//public method that will be invoked from other classes.
public static ConnectionManager getInstance() {
if(instance == null) {
instance = new ConnectionManager();
}
return instance;
}
public void authenticate(){
// Do your auth call with the client here
}
public void postStuff(){
// Use the same client here, this way you keep using the same client for ALL of your calls.
}
}
当您需要使用connectionmanager时,请使用以下命令:
private static ConnectionManager conn = ConnectionManager.getInstance();
conn.authenticate();
conn.postStuff();