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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Обработка нажатия CheckBox в ListView http://www.cyberforum.ru/android-dev/thread1154098.html
Привет, Есть ListView на основе BaseAdapter. Каждый элемент содержит TextView и несколько чекбоксов. Как обработать нажатие на конкретный CheckBox? onListItemClick при нажатие на чекбокс не вызывается.
Программирование Android Не приходит ответ при HttpPost Уже неделю мучаюсь с одной проблемой. Необходимо отправить запрос на сервер и получить ответ. Запрос, как я понимаю, проходит, однако ответ по какой-то причине не приходит. Запрос с AsyncTask: class RequestTask extends AsyncTask<String, String, String> { @Override protected String doInBackground(String... params) { try { ... http://www.cyberforum.ru/android-dev/thread1153089.html
Приложение на андроид для поиска вакансий по Белоруссии. С чего начать? Программирование Android
Добрый день, взял на дипломный проект приложение на андроид для поиска вакансий по Белоруссии, но понятия даже не имею с чего начать. По идее нужно сейчас клянчить API у всех подряд сайтов с объявлениями или это можно немного по другому сделать?
Программирование Android Dimens как работать?
как создать какой нибудь Dimens, чтоб на всех экранах корректно отображалось. Существует ли в андроид студии какой нибудь инструмент для этого?
Программирование Android Адаптировать андроид приложения http://www.cyberforum.ru/android-dev/thread1152669.html
Здравствуйте! Сразу извиняюсь, за то что может быть это тема уже не однократно поднималась. Вопрос: Как адаптировать андроид приложения под разные экраны? Так так дизайн был сверстанный на экран смартфона, на планшетах он сдвинулся И как сделать адаптацию дизайна при повороте устройства?
Программирование Android Подключаем GoogleDrive НЕ находит import com.google.api Пытаюсь подключить com.google.android.gms.common.api.GoogleApiClient http://developer.android.com/reference/com/google/android/gms/common/api/GoogleApiClient.html Для испольщования GoogleDrive Маюсь весь день... облазил весь инет. Не находит он такого!!!! ААА. Почему??? Работаю в Android Studio (про сырость даже не заикаться =) ) Файл gradle: подробнее

Показать сообщение отдельно
646kapeh064
59 / 58 / 15
Регистрация: 09.12.2013
Сообщений: 206
22.04.2014, 16:51     Post запрос
В общем, кину код из моего проекта:

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