如何从我的安卓设备访问我的本地 REST API?

2022-09-04 07:32:59

我有一个弹簧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。但是,当我在构建的apk中使用相同的URL来发出请求时,不会建立任何连接。

我的清单包括:

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

附注:

我正在将设备连接到通过USB运行其余api的笔记本电脑。我正在使用通过调用 ipconfig 找到的 WLAN IPv4 地址。

任何正确方向的提示将不胜感激 - 谢谢!

编辑以包括chrome浏览器(在Android设备上)来自在我的笔记本电脑上运行的本地REST API的输出(返回默认访客用户信息的GET请求):enter image description here


答案 1

让我告诉你一个更简单的方法。如果您使用的是 Android 模拟器,则可以使用 10.0.2.2 作为 IP 地址连接到 REST API 可用的主机。

同样,如果您使用的是使用Oracle Virtualbox的Genymotion,则可以使用10.0.3.2。


答案 2

检查您的ip:- 检查ip的步骤(确保您已连接到互联网)

  1. 打开命令提示符
  2. 类型 ipconfig
  3. Ip是下图中突出显示的那个

enter image description here

现在,将您的网址如下所示:http://192.168.240.2/index.html


推荐