Форум программистов, компьютерный форум 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. Просмотров 1209. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Coockie, хранение PHPSESSID во время работы приложения (Программирование Android):

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

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

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

как установить время жизни 1 день для PHPSESSID в Laravel 5? - PHP
как установить время жизни 1 день для PHPSESSID в Laravel 5 и как сделать все существующие не действительными?

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

Определить время работы приложения - C++
помогите пожалуйста вывести время программы за которое оно работает #include <stdio.h> #include <string.h> int main(void) { ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
YuraAAA
1574 / 1316 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 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 / 2
Регистрация: 14.06.2010
Сообщений: 1,189
Записей в блоге: 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
Привет! Вот еще темы с ответами:

Повышение прав приложения во время работы - C++ Linux
Имеется проект графической программы. Этой программе необходимо во время работы повышать права до суперпользователя. Во время работы...

Закрыть порт на время работы приложения - C#
Здравствуйте, подскажите как можно сделать чтобы при запуске программы блокировался для исходящий подключений порт например 7777, а после...

Смена языка приложения во время работы - C#
Добрый день. Подскажите, как сменить язык во время работы приложения? Thread.CurrentThread.CurrentUICulture = new...

Управлять стилем стороннего приложения во время работы - Visual Basic
Доброго времени суток появилась нужда управлять стилем приложения как это делается с функции shell Shell "Path", vbMaximizedFocus ...


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

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

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