Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
ILNAR_93
Android
219 / 219 / 22
Регистрация: 19.01.2013
Сообщений: 1,645
Записей в блоге: 3
#1

Post запрос - Программирование Android

22.04.2014, 14:46. Просмотров 977. Ответов 9
Метки нет (Все метки)

Как отправить Post запрос и принять ответ сервера ?

Exlipce
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2014, 14:46     Post запрос
Посмотрите здесь:

Не передается POST запрос - Программирование Android
Надо передать POST запрос по адресу http://192.168.43.199/andr/request.php в файле request.php такой код: <?php echo $_POST; ...

Retrofit2, POST запрос - Программирование Android
Пытаюсь передать данные на веб сервер. читал туториалы но не могу понять до конца как это реализовать. Создал интерфейс, подключил все...

POST - запрос на сервер - Программирование Android
Суть задачи: при нажатии на кнопку пост-запросом отправляется переменная со значением. Проблема: при нажатии на кнопку приложение...

ANDROID и POST запрос - Программирование Android
Если честно я не знал в какой раздел лучше написать так как моя задача затрагивает несколько областей программирования. Если что извините...

Потоки и post запрос - Программирование Android
Добрый вечер всем. Уже два дня не могу разобраться с выполнением post запроса на андроиде. Перечитал кучу статей. Знаю что с андроида 2.3...

Post запрос XML - Программирование Android
Добрый день, подскажите, как сделать post запрос, отправляться должна xml вида: <?xml version="1.0" encoding="UTF-8" ?> <data> ...

Android POST запрос iii - Программирование Android
Всем привет, нужна помощь с POST запросами. Вообщем, есть голосовой ассистент "Дуся". И в ней есть скрипт "А-я-яй чат бот". Вообщем это...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
22.04.2014, 14:50     Post запрос #2
POST - запрос на сервер
Post и Get запрос java
Получение JSON с сервера

Поиск по форуму не отменяли
ILNAR_93
Android
219 / 219 / 22
Регистрация: 19.01.2013
Сообщений: 1,645
Записей в блоге: 3
22.04.2014, 15:43  [ТС]     Post запрос #3
Если можете, напишите пожалуйста рабочий пример в инете много примеров но с не активными URL

Добавлено через 11 минут
NiRamz, час попробую спасибо!


Вставил вот это в OnCreate. и прога вылетает
проект hello world

или он вылетает потому что не существует http://www.site.ru/index.php ?

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://www.site.ru/index.php");
 
        try {
            // Добавим данные (пара - "название - значение")
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
            nameValuePairs.add(new BasicNameValuePair("json_mobile", "android"));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            // Выполним запрос
            HttpResponse response = httpclient.execute(httppost);
            
        } catch (ClientProtocolException e) {
            // Ошибка :(
        } catch (IOException e) {
            // Ошибка :(
        }
646kapeh064
59 / 58 / 15
Регистрация: 09.12.2013
Сообщений: 206
22.04.2014, 15:44     Post запрос #4
kaspersky, видимо потому-что длительный запрос выполняешь не в отдельном потоке, а в основном.
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
22.04.2014, 16:22     Post запрос #5
вся работа с сетью должна идти в отдельном потоке
ILNAR_93
Android
219 / 219 / 22
Регистрация: 19.01.2013
Сообщений: 1,645
Записей в блоге: 3
22.04.2014, 16:39  [ТС]     Post запрос #6
Ребята как вот это присобачить ?

Кликните здесь для просмотра всего текста
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
private class ShowDialogAsyncTask extends AsyncTask<Void, Integer, Void> {
 
        int progress_status;
 
        @Override
        protected void onPreExecute() {
            // обновляем пользовательский интерфейс сразу после выполнения задачи
            super.onPreExecute();
 
            Toast.makeText(MyActivity.this, "Вызов onPreExecute()", Toast.LENGTH_SHORT).show();
 
            progress_status = 0;
            txt_percentage.setText("Загрузка 0%");
 
        }
 
        @Override
        protected Void doInBackground(Void... params) {
 
            while(progress_status<100){
 
                progress_status += 2;
 
                publishProgress(progress_status);
                SystemClock.sleep(300);
 
            }
            return null;
        }
 
        @Override
        protected void onProgressUpdate(Integer... values) {
            super.onProgressUpdate(values);
 
            progressBar.setProgress(values[0]);
            txt_percentage.setText("загрузка " +values[0]+"%");
 
        }
 
        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
 
            Toast.makeText(MyActivity.this, "Вызов onPostExecute()", Toast.LENGTH_SHORT).show();
 
            txt_percentage.setText("Загрузка завершена!");
            btn_start.setEnabled(true);
        }
    }


Добавлено через 2 минуты
я в правильную сторону копаю ? или все таки чет не то нашел ??)
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
22.04.2014, 16:49     Post запрос #7
в doInBackground выполняем работу с сетью, в onPostExecute выводим результат.
646kapeh064
59 / 58 / 15
Регистрация: 09.12.2013
Сообщений: 206
22.04.2014, 16:51     Post запрос #8
В общем, кину код из моего проекта:

IDownload:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.io.InputStream;
 
// author interface: kapehh
public interface IDownload {
    // param sender from C#
    
    void onPreExecute(AsyncDownload sender); // Main thread (access UI)
    
    // InputStream in - data stream from server, here need read bytes
    Object onDownloading(AsyncDownload sender, InputStream in); // NO Main thread
    
    // Object data - data from returned onDownloading
    void onProgressUpdate(AsyncDownload sender, Object data); // Main thread (access UI)
    
    void onPostExecute(AsyncDownload sender); // Main thread (access UI)
}
AsyncDownload:
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
97
98
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
 
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
 
// author class: kapehh
public class AsyncDownload extends AsyncTask<String, Object, Void> {
    private IDownload raiseEvent = null;
    private Context activity = null;
    private ProgressDialog dialog = null;
    private Map<String, Object> map = new HashMap<String, Object>();
    
    public AsyncDownload(Context context, IDownload events) {
        raiseEvent = events;
        activity = context;
        DialogInit();
    }
    
    private void DialogInit() {
        dialog = new ProgressDialog(activity);
        dialog.setMessage("Подождите...");
        dialog.setIndeterminate(true);
        dialog.setCancelable(false);
    }
    
    public AsyncDownload setMessage(String message) {
        dialog.setMessage(message);
        return this;
    }
    
    public AsyncDownload addItem(String key, Object value) {
        map.put(key, value);
        return this;
    }
    
    public Object getItem(String key) {
        return map.get(key);
    }
    
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        try {
            dialog.show();
        } catch(Exception e) { }
        raiseEvent.onPreExecute(this);
    }
    
    @Override
    protected Void doInBackground(String... urls) {
        try {
            InputStream in;
            Object res;
            for (String url : urls) {
                in = downloadFile(url);
                res = raiseEvent.onDownloading(this, in);
                publishProgress(res);
                in.close();
            }
        } catch (Exception e) {
            
        }
        return null;
    }
 
    @Override
    protected void onProgressUpdate(Object... progr) {
        super.onProgressUpdate(progr);
        raiseEvent.onProgressUpdate(this, progr[0]);
    }
    
    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);
        try {
            dialog.dismiss();
        } catch(Exception e) { }
        raiseEvent.onPostExecute(this);
    }
    
    private InputStream downloadFile(String strUrl) throws Exception {
        URL url = new URL(strUrl);
        URLConnection urlConnection = url.openConnection();
        return urlConnection.getInputStream();
    }
    
}
Utils:
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
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.net.URLEncoder;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
 
import android.util.Log;
 
public class Utils {
    public static final int MAX_BLOCK_SIZE = 8 * 1024; // 8 Kb
    
    public static String urlencode(String in) {
        try {
            return URLEncoder.encode(in, "utf-8");
        } catch (Exception e) { }
        return null;
    }
    
    public static StringBuilder getAllText(InputStream in) throws IOException {
        StringBuilder total = new StringBuilder();
        byte[] data = new byte[MAX_BLOCK_SIZE];
        int nRead;
        while ((nRead = in.read(data)) != -1) {
            total.append(new String(data, 0, nRead));
        }
        return total;
    }
    
    public static byte[] getAllBytes(InputStream in) throws IOException {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        byte[] data = new byte[MAX_BLOCK_SIZE];
        int nRead;
        while ((nRead = in.read(data)) != -1) {
            baos.write(data, 0, nRead);
        }
        baos.flush();
        return baos.toByteArray();
    }
    
    public static String calculateMD5(File updateFile) throws IOException, NoSuchAlgorithmException {
        MessageDigest digest = MessageDigest.getInstance("MD5");
        InputStream is = new FileInputStream(updateFile);
        byte[] buffer = new byte[MAX_BLOCK_SIZE];
        int read;
        
        while ((read = is.read(buffer)) > 0) {
            digest.update(buffer, 0, read);
        }
        
        byte[] md5sum = digest.digest();
        BigInteger bigInt = new BigInteger(1, md5sum);
        String output = bigInt.toString(16);
        output = String.format("%32s", output).replace(' ', '0');
        is.close();
        
        return output;
    }
    
}
===============================================================


Использование:

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
private static class MyDownloadListenerFileContent implements IDownload {
        
        @Override
        public void onPreExecute(AsyncDownload sender) {
            
        }
        
        @Override
        public Object onDownloading(AsyncDownload sender, InputStream in) {
            try {
                return Utils.getAllBytes(in); // InputStream это открытый поток, читаем из него как нам удобно, в данном случае читаем просто как массив байт (для малых размеров)
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
 
        @Override
        public void onProgressUpdate(AsyncDownload sender, Object data) {
            // в data содержится byte[] возвращенный из onDownloading
                        // делаем с ним что хотим, например записываем в файл
        }
 
        @Override
        public void onPostExecute(AsyncDownload sender) {
            Toast.makeText(self, "Расписание загружено!", Toast.LENGTH_SHORT).show(); // self это текущая Activity
        }
    }
 
. . .
 
// и собственно, вызов в 1 строку :)
new AsyncDownload(this, new MyDownloadListenerFileContent()).execute("тут свой url");
ILNAR_93
Android
219 / 219 / 22
Регистрация: 19.01.2013
Сообщений: 1,645
Записей в блоге: 3
22.04.2014, 16:58  [ТС]     Post запрос #9
пробую)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2014, 17:15     Post запрос
Еще ссылки по теме:

Retrofit 2, POST запрос, авторизация - Программирование Android
Добрый день! На собеседовании (Junior Android Dev) мне дали задание написать приложение с авторизацией. Вот текст задачи: Все методы...

POST запрос из андроид приложения - Программирование Android
Здравствуйте, Я хочу отправить POST-запрос из андроид приложения, ответ от сервера получать необязательно. На сайте POST-запрос...

Оборвать POST-запрос к серверу - Программирование Android
Создаю в новом потоке POST запрос к серверу и отправляю на него данные. Делаю проверку, что если по какой-то случайности данные не будут...

Post,Get запрос в новом потоке - Программирование Android
Как переписать код чтобы было возможным отправить запрос на android 4.0.3? Возникает ошибка, читал что это от того что в главном потоке...

POST запрос при открытом WebSocket'e - Программирование Android
Можно ли делать POST запрос к серверу в то время, когда открыт WebSocket?


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

Или воспользуйтесь поиском по форуму:
dajver
408 / 272 / 18
Регистрация: 18.09.2010
Сообщений: 1,106
22.04.2014, 17:15     Post запрос #10
http://loopj.com/android-async-http/ отличная библиотека, пользуйся ей
Yandex
Объявления
22.04.2014, 17:15     Post запрос
Ответ Создать тему
Опции темы

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