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

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

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

Author24 — интернет-сервис помощи студентам
Приветствую, уважаемые программисты.
Изучаю программирование на 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2015, 13:26
Ответы с готовыми решениями:

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

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

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

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

2
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
18.11.2015, 13:58 2
Лучший ответ Сообщение было отмечено 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  [ТС] 3
Спасибо огромное, все заработало
Даже не верится, что было так просто
0
18.11.2015, 14:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.11.2015, 14:16
Помогаю со студенческими работами здесь

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

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

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

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

Обработка POST запроса
Добрый день. Я новичок в ASP, подскажите пожалуйста. На странице есть форма &lt;form...

Обработка post- запроса
Может ли post - запрос обработать сам себя? То есть я имею ввиду вот это нессылаться чтобы form...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru