Подтвердить что ты не робот

Сообщение об ошибке отказано

Я хочу подключить 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

Я буду благодарен за вашу помощь.

4b9b3361

Ответ 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