如何从servlet向Android应用程序发送数组列表?
答案 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对象。