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

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

28.08.2013, 17:21. Показов 2935. Ответов 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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru