Как я могу получить доступ к моему локальному REST api с моего устройства Android?

У меня есть весенний REST api, работающий локально на моем компьютере. Я бы хотел использовать этот api для разработки Android.

Вот мой запрос на получение:

public static String sendGet(final String url) { StringBuilder result = new StringBuilder(); HttpURLConnection urlConnection = null; try { String apiUrl = getAbsoluteUrl(url); // concatenate uri with base url eg: localhost:8080/ + uri URL requestUrl = new URL(apiUrl); urlConnection = (HttpURLConnection) requestUrl.openConnection(); urlConnection.connect(); // no connection is made InputStream in = new BufferedInputStream(urlConnection.getInputStream()); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); String line; while ((line = reader.readLine()) != null) { result.append(line); } } catch (Exception e) { e.printStackTrace(); } finally { urlConnection.disconnect(); } return result.toString(); } 

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

Мой манифест включает:

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

Боковые заметки:

Я подключаю свое устройство к ноутбуку, используя остальные api через usb. Я использую IP-адрес WLAN, найденный при вызове ipconfig.

Любые советы в правильном направлении были бы очень благодарны – спасибо!

Изменить, чтобы включить браузер Chrome (на устройстве Android), выводимый из локального REST api, работающего на моем ноутбуке (запрос GET для возврата информации о гостевой гостевой системе по умолчанию): Введите описание изображения здесь

Проверьте свой ip: – шаги для проверки ip (убедитесь, что вы подключены к интернету)

  1. Откройте командную строку
  2. Тип ipconfig
  3. Ip является выделенным на изображении ниже

Введите описание изображения здесь

Теперь сделайте свой URL-адрес следующим образом: http://192.168.240.2/index.html

Ваш URL-адрес для отдыха должен быть примерно таким http://localhost:8080/yourRest/restMethod .
Вместо localhost url подключите свой мобильный и локальный компьютер к той же сети (сеть Wi-Fi). Получите IP-адрес вашего локального компьютера, например 192.168.1.X … поэтому теперь ваш конечный URL-адрес для отдыха будет http://192.168.1.X:8080/yourRest/restMethod

Позвольте мне сказать вам более простой способ сделать это. Если вы используете Android-эмулятор, вы можете использовать 10.0.2.2 в качестве IP-адреса для подключения к хост-машине, где доступен ваш REST API.

Аналогично, если вы используете Genymotion, который использует Oracle Virtualbox, вы можете использовать 10.0.3.2.

РЕШАЕТ, если кому-то интересно:

Мне удалось исправить эту проблему, расширив класс, мой оригинальный sendGet(final String url) был следующим: HttpClientUsage extends AsyncTask<String, Void, String> больше информации, и учебник можно найти здесь: Учебник AsyncTask

Затем мне пришлось настроить параметры CORS на моем локальном REST API следующим образом:

  cors: allowed-origins: "*" allowed-methods: GET, PUT, POST, DELETE, OPTIONS allowed-headers: "*" exposed-headers: allow-credentials: true max-age: 1800 

Спасибо всем за вашу помощь, это очень ценится.