作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个在我的计算机上本地运行的 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 请求):
最佳答案
让我告诉你一个更简单的方法来做到这一点。如果您使用的是 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/
我是一名优秀的程序员,十分优秀!