Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
Sanu0074
58 / 58 / 16
Регистрация: 14.06.2010
Сообщений: 1,190
Записей в блоге: 5
1

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

20.12.2013, 14:48. Просмотров 1364. Ответов 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, чтоб при каждом запросе, сервер знал что это все в пределах одной сессии? Сессия должна жить до тех пор пока приложение в загружено в памяти, если мы вышли из приложения и потом опять зашли - то это уже новая сессия. А так в данном случае получается что когда я загрузил форму с картинкой капчи - это одна сессия, а когда я отправляю коммент и код капчи - то это уже другая сессия, и сервер не пропустит этот запрос. Как решить эту проблему?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2013, 14:48
Ответы с готовыми решениями:

Хранение файлов приложения
У меня есть 2 файла, 1 текстовый, второй картинка. Я хочу что бы они при...

Хранение дополнительных данных вне APK приложения
Добрый вечер. Возник такой вопрос: делаю приложение на Unity. Для корректной...

Хранение HTML, файлов, картинок, стилей в ресурсах приложения
Есть некий контент который нужно отобразить в WebView, как можно папку с html и...

Как установить время жизни 1 день для PHPSESSID в Laravel 5?
как установить время жизни 1 день для PHPSESSID в Laravel 5 и как сделать все...

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

2
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
20.12.2013, 15:36 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 - инстанс менеджера.
1
Sanu0074
58 / 58 / 16
Регистрация: 14.06.2010
Сообщений: 1,190
Записей в блоге: 5
20.12.2013, 19:45  [ТС] 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?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2013, 19:45

Определить время работы приложения
помогите пожалуйста вывести время программы за которое оно работает #include...

Ошибка во время работы приложения
Доброго времени суток. Во время работы приложения вылетает такая ошибка....

Смена языка приложения во время работы
Добрый день. Подскажите, как сменить язык во время работы приложения? ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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