如何将数组列表从 servlet 发送到 Android 应用程序?
最佳答案
至此,您需要将其转换为某种标准格式的 String
,然后可以使用现有库对其进行解析和构建。例如,JSON、XML 或 CSV,它们都是标准化的和可交换的字符串格式,在许多编程语言中存在大量解析/构建库。
Android 在 the org.json
package 中有一个内置的 JSON 解析器.它甚至在 the org.xml.sax
package 中有一个内置的 XML 解析器。 .我不确定是否有内置的 CSV 库,但似乎没有。 Java EE 具有 JAXB 的风格一个很棒的内置 XML 解析器,但它没有内置的 JSON 解析器。只有 JAX-RS 实现(Jersey、RESTeasy 等)提供 JSON 解析器。如果您可以将您的 servlet 更改为 JAX-RS web 服务,那么您将受益于能够以非常小的努力返回 XML 和 JSON。另见 Servlet vs RESTful .
选择哪种格式取决于唯一的功能需求。例如,servlet 是否应该被其他服务重用?目标客户是什么?等等。
无论如何,JSON 格式通常比 XML 更简洁,最近更流行,所以我将给出一个以 JSON 格式传输数据的启动示例,我假设您真的想这样做使用普通的 vanilla servlet 而不是 JAX-RS。对于此示例,您只需要下载并删除一个 JSON 库,例如 Gson在 /WEB-INF/lib
中,以便在 servlet 中将 Java 对象转换为 JSON。
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<String> list = new ArrayList<String>();
list.add("item1");
list.add("item2");
list.add("item3");
String json = new Gson().toJson(list);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(json);
}
这将构建并返回以下 JSON 格式的 List
:
["item1","item2","item3"]
这又可以通过 Android 中的 org.json
API 进行解析,如下所示:
String jsonString = getServletResponseAsStringSomehow(); // HttpClient?
JSONArray jsonArray = new JSONArray(jsonString);
List<String> list = new ArrayList<String>();
for (int i = 0; i < jsonArray.length(); i++) {
list.add(jsonArray.getString(i));
}
// Now you can use `list`.
关于android - 将 arraylist 从 servlet 发送到 Android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8292815/