java - 如何从我的 Android 设备访问本地 REST API?

标签 java android rest api localhost

我有一个在我的计算机上本地运行的 spring 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 发出请求时,没有建立连接。

我的 list 包括:

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

旁注:

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

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

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

最佳答案

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

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

关于java - 如何从我的 Android 设备访问本地 REST API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41196020/

相关文章:

java - 使用 CrudRepository 从 View 获取数据

java - 使用 Apache POI 创建受密码保护的 Excel 文件?

java - Mockito 验证错误的重载方法

android - 所选小部件的主题相关颜色

android - 为什么从 android-support-v4 切换到 v13 时方法计数没有下降

json - 从 Postman 创建 Firestore 数据库文档

java - 当 catch 并没有真正捕捉到任何东西时

java - 如何查找文件是否为 CSV 文件?

java - 如何限制 Firebase 电子邮件登录中的错误密码尝试?

java - Spring RequestBody 与 Postman 测试