![](/img/trans.png)
[英]How can I access information from Schoology's REST API in my Android app?
[英]How can I access my local REST api from my android device?
我的计算机上有一个本地运行的Spring REST api。 我想在Android开发中使用这个api。
这是我的获取请求:
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设备上)(A GET请求返回默认访客用户信息):
让我告诉你一个更简单的方法来做到这一点。 如果您使用的是Android模拟器,则可以使用10.0.2.2作为IP地址连接到REST API可用的主机。
同样,如果您使用的是使用Oracle Virtualbox的Genymotion,则可以使用10.0.3.2。
你的休息网址必须是这样的 - http://localhost:8080/yourRest/restMethod
。
而不是localhost网址将您的移动和本地计算机连接到同一网络(wifi网络)。 获取本地计算机的IP地址, 例如192.168.1.X ...所以现在你的终点url for rest将是http://192.168.1.X:8080/yourRest/restMethod
已解决,如果有人有兴趣:
我设法通过扩展类我的原始sendGet(final String url)
如下来解决这个问题HttpClientUsage extends AsyncTask<String, Void, String>
更多信息和教程可以在这里找到: AsyncTask教程
然后,我必须在本地REST API上配置我的CORS设置,如下所示:
cors:
allowed-origins: "*"
allowed-methods: GET, PUT, POST, DELETE, OPTIONS
allowed-headers: "*"
exposed-headers:
allow-credentials: true
max-age: 1800
谢谢大家的帮助,非常感谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.