Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 2

Обработка результата POST-запроса в Android

18.11.2015, 13:26. Показов 2702. Ответов 2

Студворк — интернет-сервис помощи студентам
Приветствую, уважаемые программисты.
Изучаю программирование на Android. Пытаюсь сделать простенькое клиент-серверное приложение.
Задачу следующая - с android-а на сервер отправляется post запрос с данными для регистрации пользователя, сервер в ответ отправляет "yes" или "no", в зависимости от того произошла регистрация или нет.
Веб-сервер - Apache/2.4.17 (Win64) PHP/5.6.15.
Клиент - эмулятор Android API 15.

Код на Андроид:
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
private void insertToDatabase(String name, String pass, String firs, String last, String uinf){
        class SendPostReqAsyncTask extends AsyncTask<String, Void, String> {
            @Override
            protected String doInBackground(String... params) {
                String paramUsername = params[0];
                String paramPassword = params[1];
                String paramFirstName = params[2];
                String paramLastName = params[3];
                String paramUserInfo = params[4];
 
 
                String name = editTextUsername.getText().toString();
                String pass = editTextPassword.getText().toString();
                String firs = editTextFirstName.getText().toString();
                String last = editTextLastName.getText().toString();
                String uinf = editTextUserInfo.getText().toString();
 
 
                HashMap<String, String> postDataParams = new HashMap<String, String>();
                postDataParams.put("username", name);
                postDataParams.put("password", pass);
                postDataParams.put("first_name", firs);
                postDataParams.put("last_name", last);
                postDataParams.put("user_info", uinf);
 
                URL url;
                String response = "";
                try {
                    url = new URL("http://mysyte.ru/test/create-new-user.php");
 
                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                    conn.setReadTimeout(15000);
                    conn.setConnectTimeout(15000);
                    conn.setRequestMethod("POST");
                    conn.setDoInput(true);
                    conn.setDoOutput(true);
 
 
                    OutputStream os = conn.getOutputStream();
                    BufferedWriter writer = new BufferedWriter(
                            new OutputStreamWriter(os, "UTF-8"));
                    writer.write(getPostDataString(postDataParams));
 
                    writer.flush();
                    writer.close();
                    os.close();
                    int responseCode=conn.getResponseCode();
 
                    if (responseCode == HttpsURLConnection.HTTP_OK) {
                        String line;
                        BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream()));
                        while ((line=br.readLine()) != null) {
                            response+=line;
                        }
                    }
                    else {
                        response="";
 
                        throw new HttpException(responseCode+"");
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
 
                mAnswer = response;
                return mAnswer;
            }
 
            @Override
            protected void onPostExecute(String result) {
                super.onPostExecute(mAnswer);
 
                Toast.makeText(getApplicationContext(), mAnswer, Toast.LENGTH_LONG).show();
 
                if (mAnswer == "no")
                {Toast.makeText(getApplicationContext(),"Не получилось, попробуйте другой логин", Toast.LENGTH_SHORT).show();}
                else if (mAnswer == "yes")
                {Toast.makeText(getApplicationContext(),"Вы зарегистрированы", Toast.LENGTH_SHORT).show();                    
 
                    SharedPreferences.Editor editor = mSettings.edit();
                    editor.putString(APP_PREFERENCES_USERNAME, mUsername);
                    editor.putString(APP_PREFERENCES_PASSWORD, mPassword);
                    editor.putString(APP_PREFERENCES_FIRST_NAME, mFirstName);
                    editor.putString(APP_PREFERENCES_LAST_NAME, mLastName);
                    editor.putString(APP_PREFERENCES_USER_INFO, mUserInfo);
                    editor.apply();
 
 
                    Intent intent_inbox = new Intent(RegistrationActivity.this, AboutActivity.class);
                    startActivity(intent_inbox);
                }
            }
        }
        SendPostReqAsyncTask sendPostReqAsyncTask = new SendPostReqAsyncTask();
        sendPostReqAsyncTask.execute(name, pass, firs, last, uinf);
    }
Код на PHP
PHP
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
<?php
  define('HOST','localhost');
  define('USER','root');
  define('PASS','000000');
  define('DB','test_db');
  $con = mysqli_connect(HOST,USER,PASS,DB);
 
  $username = $_POST['username'];
  $password = $_POST['password'];
  $first_name = $_POST['first_name'];
  $last_name = $_POST['last_name'];
  $user_info = $_POST['user_info'];
 
  $sql = "insert into userlist (username, user_password, user_first_name, user_last_name, user_info) 
            values ('$username','$password', '$first_name', '$last_name', '$user_info')";
  
 
  if(mysqli_query($con,$sql)){
    echo 'yes';  
  }
  else{
    echo 'no';
   }
    
  mysqli_close($con);
?>
По задумке приложение получив ответ ("yes" или "no") сначала выводит этот ответ в виде всплывающего сообщения, потом обрабатывает полученный ответ.
Так вот проблема в том, что ответ приложение выводит, но не обрабатывает.
С БД все в порядке - данные заносятся исправно. Проблема именно в обработке ответа на стороне клиента.
Если я правильно понимаю, это связано с кодировками, т.е. веб-сервер отправляет ответ в UTF-8, а в Java String-и в UTF-16 или UCS-2(точно не знаю). Пытался поменять кодировку файла create-new-user.php на UCS-2 в Notepad++ - в этом случае отправка данных вообще не работает и во всплывающем сообщении отображается содержимое всего файла(с двумя непонятными символами перед текстом).
Кто уже сталкивался с проблемой или знает как решить - подскажите нубу
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.11.2015, 13:26
Ответы с готовыми решениями:

Получение результата POST-запроса
Здравствуйте! Недавно научился посылать POST-запросы через компонент IdHTTP. Вообщем-то результатом является страница html, сгенерированная...

Отправка POST запроса и получение результата
Если я не ошибся форумом (Веб сервисы) Мне нужно сделать POST запрос на сайт http://www.pixic.ru/ Тоесть я выбрал файл жму загрузить...

Получение результата после POST запроса
Как получить код страницы после POST запроса? параметры я передал верно, но после того как я загрузил код страницы в мемо, код остался...

2
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
18.11.2015, 13:58
Лучший ответ Сообщение было отмечено geck как решение

Решение

Цитата Сообщение от geck Посмотреть сообщение
if (mAnswer == "no")
Java
1
if ("no".equalsIgnoreCase(mAnswer))
не сравниваются объекты в java через ==
1
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 2
18.11.2015, 14:16  [ТС]
Спасибо огромное, все заработало
Даже не верится, что было так просто
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.11.2015, 14:16
Помогаю со студенческими работами здесь

Ajax $.post обработка результата
Доброго времени суток. Пишу сайт с использованием ajax запросов. Суть проблемы в анкете. При отправке происходит передача полей через...

Обработка результата запроса
Добрый день Прошу более опытных подсказать по задаче.Первым запросом получаю ссылку на документ,а во втором запросе по найденной ссылке...

Принятие Post запроса из Android
Возможно ли как то организовать принятие post запроса в делфи, т е я с андроида отправляю данные пост запросом и их надо принять в делфях. ...

Обработка результата запроса из MS SQL SERVER
Добрый день. Потихоньку делал для себя проект. Столкнулся с проблемой. Когда я возвращаю результат запроса из БД и преобразую значение в...

Обработка POST запроса
Здравствуйте! Вот код запроса : $(&quot;#txtUlicaReg&quot;).autocomplete({ source: function (request, response) { ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru