Android-приложение остается подключенным к веб-сайту, куки? Сессия? - PullRequest
2 голосов
/ 25 июня 2010

Я хочу создать приложение для Android, которое в основном представляет собой пользовательский вид текстового игрового веб-сайта. Я знаю, как сделать HttpPosting и тому подобное, поэтому отправка информации для входа в систему относительно проста. Но мой вопрос в том, как мне перейти на сайт? Я никогда не работал с сессиями и файлами cookie на стороне клиента. Является ли cookie правильным способом для реализации этого? Как передать информацию обратно на сервер при доступе к последующим страницам?

Надеюсь, это имеет смысл

1 Ответ

3 голосов
/ 24 февраля 2011

Как правило, в Java HttpURLConnection вы можете установить / получить cookie таким образом (вот весь процесс подключения).Код ниже находится в run () моего ConnectingThread, от которого наследуются все подключающиеся классы активности.Все разделяют общую статическую строку sCookie, которая отправляется со всеми запросами.Следовательно, вы можете поддерживать общее состояние, например вход / выключение:

        HttpURLConnection conn = (HttpURLConnection) url.openConnection();             

        //set cookie. sCookie is my static cookie string
        if(sCookie!=null && sCookie.length()>0){
            conn.setRequestProperty("Cookie", sCookie);                  
        }

        // Send data
        OutputStream os = conn.getOutputStream(); 
        os.write(mData.getBytes());
        os.flush();
        os.close(); 

        // Get the response!
        int httpResponseCode = conn.getResponseCode();         
        if (httpResponseCode != HttpURLConnection.HTTP_OK){
           throw new Exception("HTTP response code: "+httpResponseCode); 
        }

        // Get the data and pass them to the XML parser
        InputStream inputStream = conn.getInputStream();                
        Xml.parse(inputStream, Xml.Encoding.UTF_8, mSaxHandler);                
        inputStream.close();

        //Get the cookie
        String cookie = conn.getHeaderField("set-cookie");
        if(cookie!=null && cookie.length()>0){
            sCookie = cookie;              
        }

        /*   many cookies handling:                  
        String responseHeaderName = null;
        for (int i=1; (responseHeaderName = conn.getHeaderFieldKey(i))!=null; i++) {
            if (responseHeaderName.equals("Set-Cookie")) {                  
            String cookie = conn.getHeaderField(i);   
            }
        }*/                

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