Android, аутентификация, сохранить HTTP-соединение, использовать соединение в несколько действий - PullRequest
1 голос
/ 28 сентября 2011

в моем приложении я пытаюсь получить доступ к некоторому веб-сервису. Я прохожу проверку подлинности на основе форм и получаю авторизованное соединение. Если я прошел авторизацию, я хочу открыть новую активность, но любой новый экземпляр DefaultHttpClient получил право неавторизованного доступа.

А вопросы есть:
1) Как передать это соединение через активность
2) Или как правильно поддерживать соединение, если я думаю о перехватчике httpclient, я на правильном пути? Если да, то первый вопрос остается, но относительность передачи данных CookieStore.

Ответы [ 2 ]

1 голос
/ 28 сентября 2011

Вы должны почти всегда сделать класс, который обрабатывает ваш вызов Http Requests, это ConnectionManager , которое является наиболее распространенным именем. И вы должны сделать это с помощью Singleton Design Pattern. Таким образом, ваши соединения будут обработаны правильно.

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();
0 голосов
/ 28 сентября 2011

Подкласс приложения . Вам нужно будет указать его в манифесте, чтобы он был создан. Вы сможете получить его из любого действия.

public class ClientApplication extends Application {
    Session Session = null;

    public Session getSession() {
        return Session;
    }

    public void setSession(Session session) {
        Session = session;
    }
}

в других местах

public void onCreate(Bundle savedInstanceState) {
    Log.d(TAG, "onCreate: Start");
    super.onCreate(savedInstanceState);
    setContentView(R.layout.startresume);

    ClientApplication app = ((ClientApplication)getApplication());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...