Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
145 / 145 / 35
Регистрация: 04.06.2011
Сообщений: 578

Post,Get запрос в новом потоке

28.08.2013, 17:21. Показов 2952. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как переписать код чтобы было возможным отправить запрос на android 4.0.3?
Возникает ошибка, читал что это от того что в главном потоке работать с сетью нельзя, но как необходимо переписать код что бы он заработал?
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
    package com.androidexample.httpgetexample; 
     
    import org.apache.http.client.HttpClient; 
    import org.apache.http.client.ResponseHandler; 
    import org.apache.http.client.methods.HttpGet; 
    import org.apache.http.impl.client.BasicResponseHandler; 
    import org.apache.http.impl.client.DefaultHttpClient; 
    import android.view.View.OnClickListener; 
     
    import android.os.Bundle; 
    import android.app.Activity; 
    import android.util.Log; 
    import android.view.View; 
    import android.widget.Button; 
     
    public class HttpGetAndroidExample extends Activity implements OnClickListener{ 
     
        String content; 
        Button save; 
        final String LOG_TAG = "myLogs"; 
     
        @Override 
        protected void onCreate(Bundle savedInstanceState) { 
            super.onCreate(savedInstanceState); 
            setContentView(R.layout.activity_http_get_android_example); 
     
            save = (Button) findViewById(R.id.save); 
            save.setOnClickListener(this); 
        } 
     
     
        @Override 
        public void onClick(View v) { 
            if(v == save) 
            { 
                GetReq(); 
            } 
        } 
     
        public void GetReq() { 
     
            try { 
                HttpClient Client = new DefaultHttpClient(); 
                String URL = "http://forum.startandroid.ru/posting.php?mode=post&f=41"; 
     
                try { 
                    HttpGet httpget = new HttpGet(URL); 
                    ResponseHandler<String> responseHandler = new BasicResponseHandler(); 
     
                    String SetServerString = ""; 
                    SetServerString = Client.execute(httpget, responseHandler); 
                    content = SetServerString; 
                    Log.d(LOG_TAG, "Response: " + content); 
                } catch (Exception ex) { 
                    content = "Fail!"; 
                    Log.d(LOG_TAG, "Response: " + content); 
                } 
            } catch (Exception ex) { 
                content = "Fail!!!"; 
                Log.d(LOG_TAG, "Response: " + content); 
            } 
        } 
    }
Прошу помочь))
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.08.2013, 17:21
Ответы с готовыми решениями:

ServerSocket в новом потоке
По нажатию на кнопку запускаю новый поток. в Потоке открывается порт и ждет подключения: public void onClick(View view) { // TODO...

Handlers в новом потоке
Почему не могу создать handlers в новом потоке ? Thread streamThread = new Thread(new Runnable() { public void run() { ...

Работа с изображениями в новом потоке
Доброго времени суток! У меня возникла проблемка с потоками, а собственно, не выходит работать с изображениями в новом потоке. На...

3
 Аватар для verylazy
462 / 462 / 71
Регистрация: 26.02.2013
Сообщений: 1,263
28.08.2013, 17:23
http://developer.android.com/r... cTask.html
как вариант
0
145 / 145 / 35
Регистрация: 04.06.2011
Сообщений: 578
28.08.2013, 18:18  [ТС]
Ну я вот что надыбал
Get запрос
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
    class RequestTask extends AsyncTask<String, String, String> {
 
        @Override
        protected String doInBackground(String... uri) {
            HttpClient httpclient = new DefaultHttpClient();
            HttpResponse response;
            String responseString = null;
            try {
                response = httpclient.execute(new HttpGet(uri[0]));
                StatusLine statusLine = response.getStatusLine();
                if (statusLine.getStatusCode() == HttpStatus.SC_OK) {
                    ByteArrayOutputStream out = new ByteArrayOutputStream();
                    response.getEntity().writeTo(out);
                    out.close();
                    responseString = out.toString();
                } else {
                    //Closes the connection.
                    response.getEntity().getContent().close();
                    throw new IOException(statusLine.getReasonPhrase());
                }
            } catch (ClientProtocolException e) {
            } catch (IOException e) {
            }
            return responseString;
        }
 
        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            Log.d(LOG_TAG, "Response: " + result);
        }
    }
 
    @Override
    public void onClick(View v) {
        if (v == save) {
            new RequestTask().execute("http://stackoverflow.com");//здесь надыбал
        }
    }
Теперь бы Post отправить))

Добавлено через 35 минут
А вот и 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
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
    private void sendPostRequest(String givenUsername, String givenPassword) {
 
        class SendPostReqAsyncTask extends AsyncTask<String, Void, String> {
 
            @Override
            protected String doInBackground(String... params) {
 
                String paramUsername = params[0];
                String paramPassword = params[1];
 
                System.out.println("*** doInBackground ** paramUsername " + paramUsername + " paramPassword :" + paramPassword);
 
                HttpClient httpClient = new DefaultHttpClient();
 
                HttpPost httpPost = new HttpPost("http://www.nirmana.lk/hec/android/postLogin.php");
 
                BasicNameValuePair usernameBasicNameValuePair = new BasicNameValuePair("paramUsername", paramUsername);
                BasicNameValuePair passwordBasicNameValuePAir = new BasicNameValuePair("paramPassword", paramPassword);
 
                List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();
                nameValuePairList.add(usernameBasicNameValuePair);
                nameValuePairList.add(passwordBasicNameValuePAir);
 
                try {
                    UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(nameValuePairList);
 
                    httpPost.setEntity(urlEncodedFormEntity);
 
                    try {
                        HttpResponse httpResponse = httpClient.execute(httpPost);
 
                        InputStream inputStream = httpResponse.getEntity().getContent();
 
                        InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
 
                        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
 
                        StringBuilder stringBuilder = new StringBuilder();
 
                        String bufferedStrChunk = null;
 
                        while ((bufferedStrChunk = bufferedReader.readLine()) != null) {
                            stringBuilder.append(bufferedStrChunk);
                        }
 
                        return stringBuilder.toString();
 
                    } catch (ClientProtocolException cpe) {
                        System.out.println("First Exception caz of HttpResponese :" + cpe);
                        cpe.printStackTrace();
                    } catch (IOException ioe) {
                        System.out.println("Second Exception caz of HttpResponse :" + ioe);
                        ioe.printStackTrace();
                    }
 
                } catch (UnsupportedEncodingException uee) {
                    System.out.println("An Exception given because of UrlEncodedFormEntity argument :" + uee);
                    uee.printStackTrace();
                }
 
                return null;
            }
 
            @Override
            protected void onPostExecute(String result) {
                super.onPostExecute(result);
 
                if (result.equals("working")) {
                    Toast.makeText(getApplicationContext(), "HTTP POST is working...", Toast.LENGTH_LONG).show();
                } else {
                    Toast.makeText(getApplicationContext(), "Invalid POST req...", Toast.LENGTH_LONG).show();
                }
            }
        }
 
        SendPostReqAsyncTask sendPostReqAsyncTask = new SendPostReqAsyncTask();
        sendPostReqAsyncTask.execute(givenUsername, givenPassword);
    }
    @Override
    public void onClick(View v) {
        if (v == save) {
            sendPostRequest("anuja", "123");
        }
    }
0
22 / 22 / 4
Регистрация: 10.04.2011
Сообщений: 248
30.08.2013, 21:49
Советую использовать архитектуру предложенную гуглом для подобных задач, если хотите что бы приложение работало быстро и код был расширяемым
http://youtu.be/xHXn3Kg2IQE
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.08.2013, 21:49
Помогаю со студенческими работами здесь

MessageBox в новом потоке
Нужен текст для создания messagebox в новом потоке. Хочу чтоб параллельно двигалась картинка і показалась MessageBox.

конструктор в новом потоке?
Добрый день, народ. Не могу решить задачу с потоками, перепробовал миллион способов... Как сделать так, чтоб конструктор объекта...

Вызов методов в новом потоке
Например, вы создали простое приложение, которое работает в одном потоке и вас все устраивает. Но иногда в приложении вызывается звуковой...

Создать окна в новом потоке
Суть задачи - создать по клику кучу окон , чтобы они показывались АСИНХРОННО (!) private void Button_Click(object sender,...

Запуск метода в новом потоке
Добрый день, помогите решить задания, у меня есть treeview, где есть метод на события BeforeExpand, мне нужно выполнять его в новом потоке,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru