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);
Может ли кто-нибудь помочь мне в этом?
Ответы
Ответ 1
если вы используете эмулятор для запуска своего приложения для локального сервера. укажите локальный ip
как 10.0.2.2
и должны предоставить разрешение на Интернет в вашем приложении:
<uses-permission android:name="android.permission.INTERNET" />
Ответ 2
<uses-permission android:name="android.permission.INTERNET"/>
добавьте этот тег выше в AndroidManifest.xml вашего Android-проекта
, и все будет хорошо.
Ответ 3
http://localhost
Вышеупомянутый хост уже занят эмулятором, в котором вы используете код. Если вы хотите получить доступ к локальному хосту вашего компьютера, чем использовать IP-адрес как http://10.0.2.2:8080/
.
Подробнее см. ссылку .
Ответ 4
i столкнулся с одной и той же проблемой, и я внес следующие изменения в свой URL, после чего он работал отлично.
From:
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
Ответ 5
попробуйте добавить разрешение вне тега приложения манифеста в дополнение к вышеупомянутым ответам на изменение localhost на 10.0.2.2:8080
Ответ 6
для использования сервера wamp 10.0.2.2
для локального хоста
например 10.0.2.2/phpMyAdmin
и для использования tomcat 10.0.2.2:8080/server
Ответ 7
Когда вы тестируете устройство, вы хотите добавить IP-адрес своего ПК.
в pc run в cmd Ipconfig
в терминале запуска Ubuntu ifconfig
Затем используйте "http://your_pc_ip_address:8080/register"
insted с использованием "http://10.0.2.2:8080/register"
in my pc = 192.168.1.3
а также добавьте разрешение для доступа к манифесту
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
Ответ 8
Я использую PHP для webservice и Android 4.x. устройство для подключения к web-сервису. У меня была аналогичная проблема, когда, используя 10.0.2.2
, хорошо работал с эмулятором, но не смог подключиться к устройству. Решение, которое сработало для меня, это: Найти IP вашего компьютера... скажите 192.168.0.103
Найти порт вашего apache... say 8080
Теперь откройте httpd.conf и найдите следующую строку Listen 127.0.0.1:8080
После этой строки добавьте follow Listen 192.168.0.103:8080
Вот оно. Теперь, если вы используете 192.168.0.103:8080
в своем коде Android, он будет подключаться!!
Ответ 9
Проверьте, что вы используете устройство Android в той же сети. Это решит проблему. получайте удовольствие!!!
Ответ 10
У меня была аналогичная проблема, затем я узнал, что Wi-Fi не подключен к моему смартфону. После того, как я включил Wi-Fi и подключился к аналогичной сети (с моим ноутбуком), возникла еще одна проблема - брандмауэр для ноутбуков блокировал входящие соединения. Как только я исправил брандмауэр, я смог связаться с моим Android-приложением с веб-сервисом, работающим на ноутбуке.
Ответ 11
Одна из основных и простых вещей, которая приводит к этой ошибке:
Нет подключения к Интернету
Сначала включите подключение к Интернету вашего устройства.
(Может быть, мы забудем это сделать)
Ответ 12
Два решения этой ошибки:
1.
добавьте это разрешение в свой androidManifest.xml вашего проекта Android
<uses-permission android:name="android.permission.INTERNET"/>
2.
Сначала включите подключение к Интернету вашего устройства.
Ответ 13
используйте 127.0.0.1
вместо localhost