Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Sanu0074
58 / 58 / 2
Регистрация: 14.06.2010
Сообщений: 1,189
Записей в блоге: 5
#1

Coockie, хранение PHPSESSID во время работы приложения - Программирование Android

20.12.2013, 14:48. Просмотров 1200. Ответов 2
Метки нет (Все метки)

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

Когда я в android-клиент загружаю сам пост и форму добавления коммента, картинку с капчей я загружаю в webView обчным способом loadUrl().

Таким образом я отправляю запрос на сервер чтобы получить оттуда какие либо данные:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
public String exe(final String stringURL, final JSONObject jsonobj, final String parameters){ 
        
        HttpURLConnection connection;
        OutputStreamWriter request = null;
 
        URL url = null;   
        String response = null;         
                  
                try
                {
                    url = new URL(stringURL);
                    connection = (HttpURLConnection) url.openConnection();
                    connection.setDoOutput(true);
                    connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                    connection.setRequestMethod("POST");    
 
                    request = new OutputStreamWriter(connection.getOutputStream());
                    request.write(parameters);
                    request.flush();
                    request.close();            
                    String line = "";               
                    InputStreamReader isr = new InputStreamReader(connection.getInputStream());
                    BufferedReader reader = new BufferedReader(isr);
                    StringBuilder sb = new StringBuilder();
                    while ((line = reader.readLine()) != null)
                    {
                        sb.append(line + "\n");
                    }
                    // Response from server after login process will be stored in response variable.                
                    response = sb.toString();
                    // You can perform UI operations here
                    //Log.d("mylog", "postJSON 2: "+response);
                    
                    isr.close();
                    reader.close();
                    
                    
                    
                    
                }
                catch(IOException e)
                {
                    
                }
                return response;
    }
Так вот, как правильно делать запрос чтобы хранилась PHPSESSID, чтоб при каждом запросе, сервер знал что это все в пределах одной сессии? Сессия должна жить до тех пор пока приложение в загружено в памяти, если мы вышли из приложения и потом опять зашли - то это уже новая сессия. А так в данном случае получается что когда я загрузил форму с картинкой капчи - это одна сессия, а когда я отправляю коммент и код капчи - то это уже другая сессия, и сервер не пропустит этот запрос. Как решить эту проблему?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2013, 14:48     Coockie, хранение PHPSESSID во время работы приложения
Посмотрите здесь:
Android Хранение файлов приложения
Android Хранение дополнительных данных вне APK приложения
Android Хранение HTML, файлов, картинок, стилей в ресурсах приложения
Android Время/Дата внутри приложения
Ошибки во время работы Android
Завершение работы приложения Android
Android Принцип работы приложения
Монопольный режим работы приложения Android
Наследование List с данными полученными во время работы Android
Android Как всё время поддерживать соединение андроид приложения с веб-сервером?
Android Вызов метода перед завершением работы приложения
Android Как правильно сделать паузу в ходе работы приложения?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
20.12.2013, 15:36     Coockie, хранение PHPSESSID во время работы приложения #2
Sanu0074, сохраняйте Cookie после первого соединения. Используйте CookieManager http://developer.android.com/referen...ieManager.html

F.e.
Java
1
2
3
4
URLConnection conn = u.openConnection();
 CM.setCookies(conn);
 conn.connect();
 CM.storeCookies(conn);
Где CM - инстанс менеджера.
Sanu0074
58 / 58 / 2
Регистрация: 14.06.2010
Сообщений: 1,189
Записей в блоге: 5
20.12.2013, 19:45  [ТС]     Coockie, хранение PHPSESSID во время работы приложения #3
Цитата Сообщение от YuraAAA Посмотреть сообщение
Sanu0074, сохраняйте Cookie после первого соединения. Используйте CookieManager
Как это реализовать на моем примере? как тут добавить setCoockie?

Добавлено через 1 час 38 минут
Вот я пытаюсь получить PHPSESSID при превом запуске:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
              InputStream is = null; 
                // HTTP 
                try {             
                    HttpClient httpclient = new DefaultHttpClient(); // for port 80 requests! 
                    HttpPost httppost = new HttpPost(stringURL);
                    HttpResponse response = httpclient.execute(httppost); 
                    HttpEntity entity = response.getEntity(); 
                    is = entity.getContent(); 
                } catch(Exception e) { 
                    return; 
                } 
                // Read response to string 
                try {             
                    BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf-8"),8); 
                    StringBuilder sb = new StringBuilder(); 
                    String line = null; 
                    while ((line = reader.readLine()) != null) { 
                        sb.append(line + "\n"); 
                    } 
                    is.close(); 
                    out = sb.toString();      
                } catch(Exception e) { 
                    return; 
                }
На сервере прописано в скрипте куда обращаюсь с клиента:

PHP
1
exit($_COOKIE['PHPSESSID']);
В логах в клиента, возвращает ошибку PHP - undefinet index PHPSESSID

А вот если я с браузера к этому скрипту обращаюсь - то в браузер выводится именно PHPSESSID как оно должно быть (кука)!

Почему так? Что нужно чтобы при запросе с андроида выводил куку, а не undefinet index PHPSESSID?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru