Android, как поддерживать сессию

0

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

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

Но проблема в том, что я не могу получить sessionId из заголовка первого соединения и отправить его с дальнейшим запросом вместе с заголовком.

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

Теги:
web-services
session-cookies

1 ответ

0
Лучший ответ

Наконец, я решил проблему обработки сеансов в Android. Android can not обрабатывает сам сеанс (который может быть простым браузером), поэтому мы должны обрабатывать его явно. Я немного изменил код для http-соединения. Создал экземпляр DefaultHttpClient в первом действии, когда установлено соединение

public static DefaultHttpClient httpClient;

При первом подключении я сделал следующее:

открытый класс ServiceHandler {

static String response = null;
public final static int GET = 1;
public final static int POST = 2;

public ServiceHandler() {

}

public String makeServiceCall(String url, int method) {
    return this.makeServiceCall(url, method, null);
}

public String makeServiceCall(String url, int method,
        List<NameValuePair> params) {
    try {

        // http client

        HttpEntity httpEntity = null;
        HttpResponse httpResponse = null;

        // Checking http request method type
        if (method == POST) {
            HttpPost httpPost = new HttpPost(url);
            // adding post params
            if (params != null) {
                httpPost.setEntity(new UrlEncodedFormEntity(params));
            }

            httpResponse = MainActivity.httpClient.execute(httpPost);

        } else if (method == GET) {
            // appending params to url
            if (params != null) {
                String paramString = URLEncodedUtils
                        .format(params, "utf-8");
                url += "?" + paramString;
            }
            HttpGet httpGet = new HttpGet(url);

            httpResponse = MainActivity.httpClient.execute(httpGet);

        }
        httpEntity = httpResponse.getEntity();
        response = EntityUtils.toString(httpEntity);

    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    return response;

}

}

и позвоните следующим образом

jsonStr = sh.makeServiceCall(url, ServiceHandler.GET);

это также поможет мне решить проблему сеанса в Android.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню