将arraylist从servlet发送到Android应用程序

时间:2011-11-28 07:50:08

标签: android servlets

如何从servlet向Android应用程序发送数组列表?

2 个答案:

答案 0 :(得分:5)

到目前为止,您需要将其转换为某种标准格式的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。对于此示例,您只需要在/WEB-INF/lib中下载并删除Gson等JSON库,以便将Java对象转换为servlet中的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`.

答案 1 :(得分:1)

如果是基于拉取的模型,您可以从Android应用程序向服务器端点发送HTTP GET请求,HTTP响应可以是从数组列表创建的JSON对象。