HTTP-cookie Android - PullRequest
       17

HTTP-cookie Android

1 голос
/ 18 июня 2011

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

Может ли кто-нибудь порекомендовать хороший учебник, который я могу использовать для создания постоянного соединения на основе cookie между Android и Drupal, пожалуйста?

Ответы [ 2 ]

1 голос
/ 11 ноября 2012

На всякий случай, если у кого-то еще возникла такая же проблема, у меня была похожая проблема, и я смог решить ее с помощью следующего кода:

1 - Определите CookieManager и CookieStore в своем классе

CookieManager cookieManager;
CookieStore cookieStore;

2 - добавить обработчик файлов cookie по умолчанию, например, в конструкторе класса или в методе OnCreate

cookieManager = new CookieManager();
CookieHandler.setDefault(cookieManager);

3 - использовать хранилище cookie при выполнении HTTP-запроса

public byte[] openURI(String uri) {

    try {
        URI uriObj = new URI(uri);
        DefaultHttpClient client = new DefaultHttpClient();

        // Use the cookieStor with the request
        if (cookieStore == null) {
            cookieStore = client.getCookieStore();
        } else {
            client.setCookieStore(cookieStore);
        }

        HttpGet getRequest = new HttpGet(uriObj);
        HttpResponse response = client.execute(getRequest);

        // Read the response data
                    InputStream instream = response.getEntity().getContent();
        int contentLength = (int) response.getEntity().getContentLength();
        byte[] data = new byte[contentLength];
        instream.read(data);
        response.getEntity().consumeContent();
        return data ;

    } catch (URISyntaxException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;        
}
0 голосов
/ 19 июня 2011

Я почти уверен, что если вы используете HttpClient, предоставляемый с API-интерфейсами Android, он должен осуществлять управление сеансами с помощью файлов cookie, пока вы не закроете соединение вручную.

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

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

...