ASyncTask ConnectException: в соединении отказано

Я тестирую свое приложение, работающее на Android, с помощью Android Studio. но я столкнулся с проблемой «Java.net.ConnectException: соединение отклонено» с помощью HttpURLConnection.getConnection().

Я уже пробовал эти:

  • Проверить сервер работает?
  • URL-адрес доступа из браузера

Это мой класс AsyncTask:

public class MyTask extends AsyncTask<String, String, String> {

        protected  void onPostExecute(String... params){
            resValue = params[0];
        }

        @Override
        protected String doInBackground(String... params) {
            URL url;
            StringBuffer response = new StringBuffer();

            System.out.println(params[0]);
            try {
                url = new URL(params[0]);
            } catch (MalformedURLException e) {
                throw new IllegalArgumentException("invalid url");
            }

            HttpURLConnection conn = null;
            try {
                conn = (HttpURLConnection) url.openConnection();
                conn.setDoOutput(false);
                conn.setDoInput(true);
                conn.setUseCaches(false);
                conn.setRequestMethod("GET");
                conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");

                // handle the response
                int status = conn.getResponseCode();
                if (status != 200) {
                    throw new IOException("Post failed with error code " + status);
                } else {
                    BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                    String inputLine;
                    while ((inputLine = in.readLine()) != null) {
                        response.append(inputLine);
                    }
                    in.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (conn != null) {
                    conn.disconnect();
                }

                String responseJSON = response.toString();
                System.out.print("This is doInBackground "+responseJSON);
                return responseJSON;
            }
        }

    }

Я бы предложил использовать правильный http-клиент, такой как Volley или Retrofit, чтобы вам не нужен AsyncTask, но также неясно, какой URL-адрес вы используете.

OneCricketeer 22.04.2019 04:28

Возможный дубликат java.net.ConnectException: в соединении отказано

Jack 22.04.2019 04:30

пример у меня работает, а у моего приложения нет... почему??

Jin-guk Park 22.04.2019 07:19

может быть.... из-за того, что мой сервер - локальный?...... другой домен просто работает

Jin-guk Park 22.04.2019 07:48
0
4
169
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Опубликуйте URL, который вы используете, это может быть проблемой. Вы должны использовать IP-адрес 10.0.2.2 вместо 127.0.0.1, потому что это IP-адрес интерфейса обратной связи по умолчанию.

даже я использую веб-сервер localhost?

Jin-guk Park 03.05.2019 08:54

да, проверьте это: developer.android.com/studio/run/emulator-networking.html

admly 03.05.2019 11:52

Другие вопросы по теме