在我的应用程序中,我试图访问一些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();

09-25 20:45