【发布时间】:2017-05-02 22:28:30
【问题描述】:
我有一个 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 发出请求时,没有建立连接。
我的清单包括:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
旁注:
我正在通过 USB 将我的设备连接到运行其余 api 的笔记本电脑。 我正在使用通过调用 ipconfig 找到的 WLAN IPv4 地址。
任何正确方向的提示将不胜感激 - 谢谢!
编辑以包含来自我笔记本电脑上运行的本地 REST api 的 chrome 浏览器(在 android 设备上)输出(返回默认访客用户信息的 GET 请求):
【问题讨论】:
-
您可以从android浏览器访问
localhost:8080吗?可能不是。localhost在所有设备上的含义不同。 -
尝试通过 localhost 检查this 连接到您的设备,访问您的文件并解析它
-
@cricket_007:我可以从我的安卓浏览器访问我的 WLAN IPv4 地址 + URI。我有一个api如下:
-
/api/users 返回所有用户的获取请求。我可以在我的 android chrome 浏览器中看到输出 JSON。但是当我在我的 android 设备 apk 版本中进行此调用时,我没有连接。
-
@Alien 我面临同样的问题。你有解决方案吗?
标签: java android rest api localhost