Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
ILNAR_93
Android
237 / 237 / 49
Регистрация: 19.01.2013
Сообщений: 1,881
Записей в блоге: 3
1

Post запрос

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

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

Exlipce
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2014, 14:46
Ответы с готовыми решениями:

Post запрос
Как отправить POST запрос на java?

POST запрос
Существует активити "Register", содержащий несколько элементов edittext....

POST Запрос
подскажите что здесь не так, ошибка возникает на строке HttpResponse...

post запрос
public String postData() { String str = null; HttpClient...

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

9
NiRamz
211 / 211 / 33
Регистрация: 26.12.2010
Сообщений: 691
22.04.2014, 14:50 2
POST - запрос на сервер
Post и Get запрос java
Получение JSON с сервера

Поиск по форуму не отменяли
1
ILNAR_93
Android
237 / 237 / 49
Регистрация: 19.01.2013
Сообщений: 1,881
Записей в блоге: 3
22.04.2014, 15:43  [ТС] 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) {
            // Ошибка :(
        }
0
646kapeh064
59 / 58 / 16
Регистрация: 09.12.2013
Сообщений: 208
22.04.2014, 15:44 4
kaspersky, видимо потому-что длительный запрос выполняешь не в отдельном потоке, а в основном.
1
NiRamz
211 / 211 / 33
Регистрация: 26.12.2010
Сообщений: 691
22.04.2014, 16:22 5
вся работа с сетью должна идти в отдельном потоке
0
ILNAR_93
Android
237 / 237 / 49
Регистрация: 19.01.2013
Сообщений: 1,881
Записей в блоге: 3
22.04.2014, 16:39  [ТС] 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 минуты
я в правильную сторону копаю ? или все таки чет не то нашел ??)
0
NiRamz
211 / 211 / 33
Регистрация: 26.12.2010
Сообщений: 691
22.04.2014, 16:49 7
в doInBackground выполняем работу с сетью, в onPostExecute выводим результат.
0
646kapeh064
59 / 58 / 16
Регистрация: 09.12.2013
Сообщений: 208
22.04.2014, 16:51 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");
0
ILNAR_93
Android
237 / 237 / 49
Регистрация: 19.01.2013
Сообщений: 1,881
Записей в блоге: 3
22.04.2014, 16:58  [ТС] 9
пробую)
0
dajver
410 / 274 / 22
Регистрация: 18.09.2010
Сообщений: 1,114
22.04.2014, 17:15 10
http://loopj.com/android-async-http/ отличная библиотека, пользуйся ей
1
22.04.2014, 17:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2014, 17:15

Не передается POST запрос
Надо передать POST запрос по адресу http://192.168.43.199/andr/request.php в...

Отправить post запрос
Как отправить простой post запрос на удаленный сервер? Сделал через...

Retrofit 2 post запрос
Делал реализацию клиент-сервер, в андроид при помощи retrofit. и встретился с...


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

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

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