Сообщение об ошибке отказано
Я хочу подключить Http к своему сервлету. Вот мой код:
try
{
HttpClient client = new DefaultHttpClient();
HttpPost httpMethod = new HttpPost("http://localhost:8080/getHeader/HeaderServlet");
httppost.setHeader("Content-Type", "application/x-www-form-urlencoded");
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String response = client.execute(httppost, responseHandler);
String result = response.toString();
}
Но я не могу, и я получаю сообщение об ошибке:
org.apache.http.conn.HttpHostConnectionException:Connection to http://localhost:8080 refused
Я буду благодарен за вашу помощь.
Ответы
Ответ 1
Используйте 10.0.2.2
вместо localhost
.
Если вы ссылаетесь на localhost
с вашего устройства, чем на http://10.0.2.2/
вместо http://127.0.0.1/
или http://localhost/
.
Поскольку ваш эмулятор Android работает на Virtual Machine(QEMU)
, и вы не можете подключиться к серверу, прямо работающему на вашем ПК.
Итак, ваш фрагмент кода будет выглядеть следующим образом:
HttpPost httpMethod = new HttpPost("http://10.0.2.2:8080/getHeader/HeaderServlet");
Подробнее см. Сеть эмуляторов.
Ответ 2
Мне нравится, что у вас была эта проблема, но я решил ее, добавив следующий ярлык:
<uses-permission android:name="android.permission.INTERNET" />
что позволило мне подключиться к Интернету. Надеюсь, вы узнаете мое решение.
Ответ 3
Чем лучше IP-адрес вашего ПК, например, в Windows, запустите "ipconfig" в консоли cmd, предположим, что ваш IP-адрес: 192.168.1.34,
то
HttpPost httpMethod =
new HttpPost("http://192.168.1.34:8080/getHeader/HeaderServlet");
Ответ 4
localhost
- это устройство Android. Я предполагаю, что это не где ваш сервлет. Вам нужно будет ввести имя хоста или IP-адрес, где находится ваш сервлет.
(Если это действительно на вашем устройстве (почему?!), то вам нужно убедиться, что у вас есть разрешение INTERNET. Вы можете попробовать подключиться к нему из встроенного браузера.)
Ответ 5
Для меня проблема решена путем удаления proxyHost, proxyPort и т.д. из gradle.properties