Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Andrew_qb
134 / 134 / 5
Регистрация: 04.06.2011
Сообщений: 551
#1

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

28.08.2013, 17:21. Просмотров 1402. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.08.2013, 17:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Post,Get запрос в новом потоке (Программирование Android):

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

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

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

Post запрос - Программирование Android
Как отправить POST запрос на java?

post запрос - Программирование Android
public String postData() { String str = null; HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost =...

POST запрос - Программирование Android
Существует активити &quot;Register&quot;, содержащий несколько элементов edittext. Пытаюсь передать текст из них в другой класс &quot;RestClient&quot;, чтобы...

3
verylazy
Заблокирован
28.08.2013, 17:23 #2
http://developer.android.com/reference/android/os/AsyncTask.html
как вариант
0
Andrew_qb
134 / 134 / 5
Регистрация: 04.06.2011
Сообщений: 551
28.08.2013, 18:18  [ТС] #3
Ну я вот что надыбал
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
MonStar
20 / 20 / 3
Регистрация: 10.04.2011
Сообщений: 225
30.08.2013, 21:49 #4
Советую использовать архитектуру предложенную гуглом для подобных задач, если хотите что бы приложение работало быстро и код был расширяемым
http://youtu.be/xHXn3Kg2IQE
0
30.08.2013, 21:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.08.2013, 21:49
Привет! Вот еще темы с ответами:

Post запрос - Программирование Android
Как отправить Post запрос и принять ответ сервера ? Exlipce

POST Запрос - Программирование Android
подскажите что здесь не так, ошибка возникает на строке HttpResponse responsePOST = client.execute(post); public...

Retrofit 2 post запрос - Программирование Android
Делал реализацию клиент-сервер, в андроид при помощи retrofit. и встретился с проблемой как реализовать POST запрос. ( GET запрос у меня...

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


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

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

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