gpt4 book ai didi

Android 应用程序使用来自网络服务的数据

转载 作者:搜寻专家 更新时间:2023-11-01 09:17:09 25 4
gpt4 key购买 nike

我想编写一个 Android 应用程序,可以显示从 Internet 资源接收(轮询)的一些数据。

我想我需要编写一些逻辑来定期调用并从某个端点获取数据,解析响应并显示它。所有这些步骤都有好的教程吗?

目前我对 Android 编程知之甚少,也许最好从更简单的东西开始。我只想知道在学习和收集一些相关资源时要寻找什么。

最佳答案

您要做的是开发一个rest api,为您的android 应用程序提供数据。例如。你的网站有一些你想在你的应用程序中使用的内容,然后你可以编写一个 php 脚本,只以特定格式返回该数据。

例如mysite.net/rest/fetchAllLocations.php?maybe_some_parameters

这将返回位置,例如json 格式,这里是一个例子:

[{"id":1,"shop_lng":8.5317153930664,"shop_lat":52.024803161621,"shop_zipcode":33602,"shop_city":"比勒费尔德","shop_street":"Arndtstra\u00dfe","shop_snumber":3,"shop_name":"M\u00fcller","shop_desc":"Kaufhaus"}]

这是一个 rest api 请求的示例:

http://shoqproject.supervisionbielefeld.de/public/gateway/gateway/get-shops-by-city/city/Bielefeld

因此,当您设置好 rest api 后,您就可以处理使用 Android 手机接收该数据的问题。我使用静态方法获取此数据:

public class JsonGrabber{

public static JSONArray receiveData(){
String url = "your url";
String result = "";

DefaultHttpClient client = new DefaultHttpClient();
HttpGet method = new HttpGet(url);
HttpResponse res = null;

try {
res = client.execute(method);
} catch (ClientProtocolException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}

try{
InputStream is = res.getEntity().getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result = sb.toString();
}catch(Exception e){
Log.e("log_tag", "Error converting result "+e.toString());
}

JSONArray jArray = null;

try{
jArray = new JSONArray(result);
}catch(JSONException e){
Log.e("log_tag", "Error parsing data "+e.toString());
}

return jArray;
}
}

好吧,一旦你有了 json 格式的数据,你只需要解析它:

JSONArray test = (JSONArray) JsonGrabber.receiveData() 

try {
for(int i=0;i<test.length();i++){
JSONObject json_data = test.getJSONObject(i);
int id = json_data.getInt("id");
}
}

Web 请求应该在另一个线程中运行,因为它可能是一个耗时的过程。所以需要处理AsyncTask。以下是一些资源:

Painless Threading Multithreading for performance Hello Android Tutorial

关于Android 应用程序使用来自网络服务的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3846688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com