org.apache.http.conn.HttpHostConnectException: подключение к http://localhost отклонено в android

Я делаю приложение, которое загружает изображения на сервер и обновляет свою базу данных на сервер в Android при его выполнении, оно показывает ошибку

Connection to http://localhost refused 

и многие другие ошибки, я исследовал эту проблему и нашел вместо предоставления URL-подключения

http://localhost/... provide the link as http://10.0.2.2/... 

и я так и сделал, но проблема такая же, больше ошибок здесь:

E/org.apache.http.conn.HttpHostConnectException(4318): Connection to http://localhost refused
E/org.apache.http.conn.HttpHostConnectException(4318): org.apache.http.conn.HttpHostConnectException: Connection to http://localhost refused
E/org.apache.http.conn.HttpHostConnectException(4318):  at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:183)
E/org.apache.http.conn.HttpHostConnectException(4318):  at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
E/org.apache.http.conn.HttpHostConnectException(4318):  at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
E/org.apache.http.conn.HttpHostConnectException(4318):  at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
E/org.apache.http.conn.HttpHostConnectException(4318):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
E/org.apache.http.conn.HttpHostConnectException(4318):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
E/org.apache.http.conn.HttpHostConnectException(4318):  at com.example.android.photobyintent.ViewRecipients.uploadFile(ViewRecipients.java:325)
E/org.apache.http.conn.HttpHostConnectException(4318):  at com.example.android.photobyintent.ViewRecipients$1.run(ViewRecipients.java:238)
E/org.apache.http.conn.HttpHostConnectException(4318):  at java.lang.Thread.run(Thread.java:856)
E/org.apache.http.conn.HttpHostConnectException(4318): Caused by: java.net.ConnectException: failed to connect to /127.0.0.1 (port 80): connect failed: ECONNREFUSED (Connection refused)
E/org.apache.http.conn.HttpHostConnectException(4318):  at libcore.io.IoBridge.connect(IoBridge.java:114)
E/org.apache.http.conn.HttpHostConnectException(4318):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
E/org.apache.http.conn.HttpHostConnectException(4318):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
E/org.apache.http.conn.HttpHostConnectException(4318):  at java.net.Socket.connect(Socket.java:842)
E/org.apache.http.conn.HttpHostConnectException(4318):  at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
E/org.apache.http.conn.HttpHostConnectException(4318):  at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
E/org.apache.http.conn.HttpHostConnectException(4318):  ... 8 more
E/org.apache.http.conn.HttpHostConnectException(4318): Caused by: libcore.io.ErrnoException: connect failed: ECONNREFUSED (Connection refused)
E/org.apache.http.conn.HttpHostConnectException(4318):  at libcore.io.Posix.connect(Native Method)
E/org.apache.http.conn.HttpHostConnectException(4318):  at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
E/org.apache.http.conn.HttpHostConnectException(4318):  at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
E/org.apache.http.conn.HttpHostConnectException(4318):  at libcore.io.IoBridge.connect(IoBridge.java:112)
E/org.apache.http.conn.HttpHostConnectException(4318):  ... 13 more

код для загрузки файла:

public int uploadFile(ArrayList<String> sourceFileUri, String info, String latitude, String longitude, String id) throws IOException {
        try {
            HttpClient httpClient = new DefaultHttpClient();
            HttpContext localContext = new BasicHttpContext();
            HttpPost httpPost = new HttpPost("http://10.0.2.2/deliverysystem/order/add");

            MultipartEntity entity = new MultipartEntity(
                    HttpMultipartMode.BROWSER_COMPATIBLE);

            entity.addPart("returnformat", new StringBody("json"));
            System.out.println(sourceFileUri.size());
            for(int i=0;i<sourceFileUri.size();i++){
                String sourceFile = sourceFileUri.get(i);
                entity.addPart("uploaded_file"+(i+1), new FileBody(new File(sourceFile)));
            }

            entity.addPart("fld_delivery_id", new StringBody(id));
            entity.addPart("fld_delivery_location", new StringBody(info));
            entity.addPart("fld_latitude", new StringBody(latitude));
            entity.addPart("fld_longitude", new StringBody(longitude));
            httpPost.setEntity(entity);
            HttpResponse response = httpClient.execute(httpPost, localContext);
            BufferedReader reader = new BufferedReader(
                    new InputStreamReader(
                            response.getEntity().getContent(), "UTF-8"));

            String sResponse = reader.readLine();
            return 1;
        } catch (Exception e) {
            if (dialog.isShowing())
                dialog.dismiss();

            Log.e(e.getClass().getName(), e.getMessage(), e);
            return 1;
        }

       }

во время отладки код достигает:

httpPost.setEntity(entity);

и он показывает исключение после этой строки, т.е. в этом утверждении:

HttpResponse response = httpClient.execute(httpPost, localContext);

Может ли кто-нибудь помочь мне в этом?


person ugene    schedule 31.12.2012    source источник


Ответы (13)


если вы используете эмулятор для запуска вашего приложения на локальном сервере. упомяните локальный ipas 10.0.2.2 и дайте разрешение на доступ к Интернету в ваше приложение:

<uses-permission  android:name="android.permission.INTERNET" />
person Saravana Kumar Chinnaraj    schedule 30.03.2013
comment
Разрешение легко забыть. - person Sinthia V; 27.02.2014
comment
Это сработало для меня, спасибо. Я совсем забыл об этом разрешении. - person Mauker; 01.08.2015
comment
stackoverflow.com/questions/34899430/ - person Hackbal Teamz; 20.01.2016

<uses-permission android:name="android.permission.INTERNET"/> добавьте этот тег выше в AndroidManifest.xml вашего проекта Android, и все будет в порядке.

person Jeffery Yuan    schedule 05.12.2013

http://localhost

Вышеупомянутый хост уже занят эмулятором, в котором вы запускаете код. Если вы хотите получить доступ к локальному хосту вашего компьютера, используйте IP-адрес как http://10.0.2.2:8080/.

Дополнительные сведения см. по этой ссылке.

person TNR    schedule 31.12.2012
comment
у меня такая ссылка: HttpPost httpPost = new HttpPost("http://10.0.2.2/deliverysystem/order/add"); - person ugene; 31.12.2012
comment
извините выдает ошибку E/org.apache.http.conn.HttpHostConnectException(4474): Connection to http://10.0.2.2:8080 refused - person ugene; 31.12.2012
comment
а также у меня есть разрешение пользователя для Интернета, и даже загружаются файлы и базы данных. и мне нужен ответ от сервера, до которого я не могу достучаться - person ugene; 31.12.2012

Я столкнулся с точно такой же проблемой, и я внес следующие изменения в свой URL-адрес, после чего он отлично работал.

От:

http://localhost/Image4android/get_all_images.php

To:

http://192.168.1.2/Image4android/get_all_images.php

where the ip: 192.168.1.2 is IPv4 address. In windows Run > CMD > Ipconfig
person min2bro    schedule 20.09.2014

попробуйте добавить разрешение вне тега приложения манифеста в дополнение к вышеупомянутым ответам на изменение localhost на 10.0.2.2:8080

person Gridtestmail    schedule 31.12.2012

для сервера wamp используйте 10.0.2.2 для локального хоста, например. 10.0.2.2/phpMyAdmin

а для кота используйте 10.0.2.2:8080/server

person Ali Nawab    schedule 03.10.2013

Убедитесь, что вы используете устройство Android в той же сети. Это решит проблему. повеселись!!!

person Saurabh Chaturvedi    schedule 03.03.2014

Когда вы тестируете устройство, вы хотите добавить IP-адрес вашего ПК.

на пк запустить в cmd Ipconfig

в Ubuntu запустить терминал ifconfig

Затем используйте "http://your_pc_ip_address:8080/register" вместо использования "http://10.0.2.2:8080/register"

in my pc = 192.168.1.3

а также добавить разрешение на доступ в Интернет в манифест

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
person hash    schedule 03.05.2015

Я использую PHP для веб-сервиса и Android 4.x. устройство для подключения к веб-сервису. У меня была аналогичная проблема, когда использование 10.0.2.2 хорошо работало с эмулятором, но не удалось подключиться с устройства. У меня сработало следующее решение: Найдите IP-адрес вашего компьютера... скажите 192.168.0.103 Найдите порт вашего апача... скажите 8080 Теперь откройте httpd.conf и найдите следующую строку Listen 127.0.0.1:8080 После этой строки добавьте следующую Listen 192.168.0.103:8080 Вот и все. Теперь, если вы используете 192.168.0.103:8080 в своем коде Android, он будет подключаться!

person Sandeep Chavarkar    schedule 20.02.2014

У меня была аналогичная проблема, потом я обнаружил, что на моем смартфоне не подключен Wi-Fi. После того, как я включил Wi-Fi и подключился к аналогичной сети (с моим ноутбуком), возникла другая проблема - брандмауэр ноутбука блокировал входящие подключения. После того, как я установил брандмауэр, я смог общаться из своего приложения для Android с веб-службой, работающей на ноутбуке.

person Farkhod    schedule 02.06.2015

Одна из основных и простых вещей, которая приводит к этой ошибке: Нет подключения к Интернету.

Сначала включите интернет-соединение вашего устройства.

(Может быть, мы забудем это сделать)

person Prabs    schedule 22.07.2015

Два решения этой ошибки:

1. добавьте это разрешение в файл androidManifest.xml вашего проекта Android.

<uses-permission android:name="android.permission.INTERNET"/>

2. Сначала включите подключение к Интернету на своем устройстве.

person Nageeb Mohammed    schedule 31.07.2016

используйте 127.0.0.1 вместо localhost

person Jahh    schedule 05.10.2014
comment
Имеет смысл, если учесть, что genymotion запускает его на виртуальной машине, а не на вашем компьютере. Но должен быть ip, например 10.0.1.13 - person jose920405; 14.06.2016