Не отправляется GET запрос на android 4.0.3

Ответить
Andrew_qb
Сообщения: 17
Зарегистрирован: 27 авг 2013, 12:14

Не отправляется GET запрос на android 4.0.3

Сообщение Andrew_qb » 28 авг 2013, 15:26

Не могу понять из-за чего не отправляется GET запрос. На 2.3.3 норм отправляется а на 4.0.3 нет

Код: Выделить всё

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);
        }
    }
}
В чём проблема?
Прошу помочь))

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Не отправляется GET запрос на android 4.0.3

Сообщение KamiSempai » 28 авг 2013, 15:51

В основном потоке с сетью работать нельзя.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Andrew_qb
Сообщения: 17
Зарегистрирован: 27 авг 2013, 12:14

Re: Не отправляется GET запрос на android 4.0.3

Сообщение Andrew_qb » 28 авг 2013, 15:58

KamiSempai писал(а):В основном потоке с сетью работать нельзя.
А почему нельзя?
Тогда другой вопрос как переписать тот код что бы он работал?

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Не отправляется GET запрос на android 4.0.3

Сообщение Mikhail_dev » 28 авг 2013, 16:25

Я уже говорил, что нельзя работать в главном UI потоке. Данная политика была введена в 3-ем андроиде. Решение проблемы уже в твоей прошлой теме было написано, использовать AsyncTask, а также и ссылку на пример дали.

Andrew_qb
Сообщения: 17
Зарегистрирован: 27 авг 2013, 12:14

Re: Не отправляется GET запрос на android 4.0.3

Сообщение Andrew_qb » 28 авг 2013, 16:36

Ну в общем вот что робит

Код: Выделить всё

    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 отправить?))

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Не отправляется GET запрос на android 4.0.3

Сообщение KamiSempai » 28 авг 2013, 17:15

no-- писал(а):Решение проблемы уже в твоей прошлой теме было написано, использовать AsyncTask, а также и ссылку на пример дали.
*Лицорука* Еще раз.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Andrew_qb
Сообщения: 17
Зарегистрирован: 27 авг 2013, 12:14

Re: Не отправляется GET запрос на android 4.0.3

Сообщение Andrew_qb » 28 авг 2013, 17:20

Ну в общем я всё нашёл, пока ты KamiSempai *facepalm*

Код: Выделить всё

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");
        }
    }

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Не отправляется GET запрос на android 4.0.3

Сообщение rezak90 » 28 авг 2013, 17:31

Andrew_qb писал(а):Ну в общем я всё нашёл, пока ты KamiSempai *facepalm*

Код: Выделить всё

if (v == save)
молодец, копируй больше и код у тебя будет всегда работать (сарказм) 8-)
R.id.team
Политика на форуме запрещена

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Не отправляется GET запрос на android 4.0.3

Сообщение Mikhail_dev » 28 авг 2013, 17:47

С таким отношением к Java
Andrew_qb писал(а):Нее читать мне не когда (по крайней мере сейчас), да и к тому же я C# программист и я его не брошу)) Всё таки если не затруднит покажите пример.
ничего хорошего не выйдет. Ну или как вариант, писать на C# (запрос в гугл "Android C#" всё подскажет)

Ответить