Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
FoGezz
0 / 0 / 0
Регистрация: 03.04.2015
Сообщений: 5
#1

Отправка POST-запроса на сервер - Программирование Android

25.10.2017, 23:18. Просмотров 235. Ответов 6
Метки нет (Все метки)

Задача - отправить на сервер запрос (либо параметры для запроса на сервере) и получить выборку. Однако с отправкой возникли проблемы.

В RegConnection передаю через execute два параметра: param[0] это текст из EditText (условие запроса) и param[1] это номер выбранного элемента спиннера. Однако при передаче данных через urlConnection.setRequestProperty (вообще не понимаю нужен ли в этой ситуации буфер выходных данных и как без него, однако для получения значения обратно нужен входной) запрос происходит через раз, и то, даже если он приходит (и создается тхт-лог), то POST-параметры пустые.

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
class RegConnection extends AsyncTask<String,Void,Void> {
 
    HttpURLConnection urlConnection = null;
    @Override
    protected Void doInBackground(String... params) {
        try {
            URL url = new URL("https://r-rp.su/php/android.php");
            urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setRequestMethod("POST");
            urlConnection.setRequestProperty("spinneritem", params[1]);
            urlConnection.setRequestProperty("value", params[0]);
            urlConnection.setDoOutput(true);
            OutputStream os = urlConnection.getOutputStream();
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
            writer.write("Hello");
            writer.flush();
            writer.close();
            os.close();
            urlConnection.connect();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        return null;
    }
}
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
27
28
29
30
31
32
33
34
35
36
37
<?php
 
$spinneritem = intval($_POST['spinneritem']);
$value = $_POST['value'];
$query = "";
file_put_contents('android.txt', $spinneritem." - item ".$value." - value\n", LOCK_EX | FILE_APPEND);
 
switch($spinneritem)
{
    case 0:
        $query = "SELECT FLIGHTS.NUM, FLIGHTS.START_TIME, FLIGHTS.AIRPORT_TARGET FROM FLIGHTS
                            INNER JOIN startings ON startings.flight_num=flights.num
                            INNER JOIN PLANES ON startings.plane_code=PLANES.PLANE_CODE +
                            WHERE PLANES.TYPE=?;";
                            
        break;
}
 
try {
    $dbh = new PDO('*данные*);
    
    $stmt = $dbh->prepare($query);
    $stmt->execute($value);
    $res = $stmt->fetchAll(PDO::FETCH_BOTH);
    $ret = json_encode($res);
    file_put_contents('android.txt', $ret." - returned value \n", LOCK_EX | FILE_APPEND);
    echo $res;
    
    
    $dbh = null;
} catch (PDOException $e) {
    echo "Error!: " . $e->getMessage() . "<br/>";
    file_put_contents('android.txt', $e->getMessage()." - exception \n", LOCK_EX | FILE_APPEND);
    die();
}
 
?>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2017, 23:18
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Отправка POST-запроса на сервер (Программирование Android):

Отправка POST запроса
Здравствуйте! Решил попробовать написать приложение на Android. Задачу поставил такую, что надо отправить с android-а на сервер post...

Отправка POST запроса
Здраствуйте, нужно на сайт отправить пост запрос з логином і паролем, потом сайт оддаст строку, ее нужно вивсти в текствів, у меня есть код...

Отправка POST запроса
Добрый день! столкнулся с проблемой, не могу отправить пост запрос, сваливаюсь на OutputStream os = con.getOutputStream(); в query...

Не работает отправка POST запроса
try{ HttpClient httpclient = new DefaultHttpClient(); //YOUR PHP SCRIPT ADDRESS HttpPost httppost...

Отправка POST запроса серверу
Здравствуйте. Пишу приложение для Android, которое получает данные о местонахождении и отправляет их на Web-сервер. Данные о...

Отправка Post запроса в Android предложении
Есть определенная php страница надо отправить на нее Post запрос из Android приложения Например на такую страниц...

6
demixdn
284 / 231 / 68
Регистрация: 31.10.2016
Сообщений: 551
26.10.2017, 15:46 #2
Вы свои параметры кладете в хидеры, на не в body
Вот ответ на каш вопрос
https://stackoverflow.com/a/13486223/7157419
1
FoGezz
0 / 0 / 0
Регистрация: 03.04.2015
Сообщений: 5
26.10.2017, 15:52  [ТС] #3
Дело в том, что я исправил эту ситуацию, но у меня складывается ощущение, что информация теряется где-то. Я подправил php под новый java-код. Должно ли это работать? Передача JSON.Object.toString() (придумал не сам, видел рабочий вариант). Никакой реакции от принимающего сервера, 0 ошибок в приложении.По идее одно и то же что и list только в немного другом формате.

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
private class RegConnection extends AsyncTask<String, Void, String> {
 
        HttpsURLConnection urlConnection = null;
 
        @Override
        protected String doInBackground(String... params) {
            try {
                URL url = new URL("https://r-rp.su/php/android.php");
                urlConnection = (HttpsURLConnection) url.openConnection();
 
                urlConnection.setRequestMethod("POST");
                //urlConnection.setRequestProperty("Content-Type", "application/json");
                urlConnection.setUseCaches(false);
                //urlConnection.setRequestProperty("spinneritem", params[1]);
                //urlConnection.setRequestProperty("value", params[0]);
                urlConnection.setDoOutput(true);
                JSONObject data = new JSONObject();
                data.put("spinneritem", params[1]);
                data.put("value", params[0]);
                // byte[] data = ("spinneritem="+params[1]+"&value="+params[0]).getBytes();
                OutputStream os = urlConnection.getOutputStream();
                BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
                bw.write(data.toString());
                bw.flush();
                bw.close();
                os.close();
                urlConnection.connect();
 
                //urlConnection.disconnect();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
 
 
    }
0
demixdn
284 / 231 / 68
Регистрация: 31.10.2016
Сообщений: 551
26.10.2017, 16:00 #4
Цитата Сообщение от FoGezz Посмотреть сообщение
$spinneritem = intval($_POST['spinneritem']);
$value = $_POST['value'];
Вы тут вытягиваете поля POST. А то, что вы только что записали, это вы создали raw data, куда записали json. Это совершенно другое.
1
FoGezz
0 / 0 / 0
Регистрация: 03.04.2015
Сообщений: 5
26.10.2017, 16:05  [ТС] #5
Я уже изменил свой php файл. Я понял про сырые данные и реализовал их получение с помощью
$input_json = json_decode(file_get_contents("php://input", TRUE)). Суть в том, что до сервера сейчас вообще не доходят запросы, будто их и нет вообще. Пробовал 2 хостинга: бегет и хостингер с https и http соответственно.
0
Pablito
2644 / 2126 / 725
Регистрация: 12.05.2014
Сообщений: 7,433
Завершенные тесты: 1
26.10.2017, 16:13 #6
разрешение на INTENET в манифесте вообще есть?
0
FoGezz
0 / 0 / 0
Регистрация: 03.04.2015
Сообщений: 5
26.10.2017, 16:15  [ТС] #7
Да, есть конечно. К сожалению отошёл из дома и не могу дать полный листинг.
Также есть на network state и в коде метод проверяющий вообще наличие подключения к сети
0
26.10.2017, 16:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2017, 16:15
Привет! Вот еще темы с решениями:

Отправка post запросов на сервер
доброго, имеется программа на пк и хочу сделать аналог для андроида, но в андроиде я не силен, в общем нужно три формы логин, веббровсер и...

Отправка файла на сервер http post запросом
Здравствуйте. Задача следующая - нужно отправить HTTP POST запрос, содержащий несколько переменных и файл. В сети много информации, но...

Отправка данных на сервер методом POST c AsyncTask
Доброго времени суток. Возникла проблема с отправкой данных. Приложение запускается, не вылетает, но на сервер ничего не отправляет. Уже...

Отправка запроса на сервер и принять результат
Здравствуйте! Такая проблема возникала. Пользователь вводит имя пользователя и пароль и отправляет эти данные на сервер. Но данные почему...


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

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

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