java服务器将字符串数组列表发送到android客户端

标签 java android servlets

我想使用servlet从android向java tomcat服务器发送请求,然后服务器将向客户端发送大量数据,数据包含很多行,每行有三个参数:

competitionID, marks, numberOfQuestions

从 android 向服务器发送请求的代码

HttpClient client = new DefaultHttpClient();
        URI website;
            website = new URI("http://" + HostIP
                    + ":8080/LocalizedBasedComptitionServer/JoinCompetition");
            HttpPost request = new HttpPost();
            request.setHeader("ID", ID + "");
            request.setURI(website);
            HttpResponse response = client.execute(request);

servlet 代码

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ServletOutputStream out = response.getOutputStream();
        CellDatabase cDB = new CellDatabase();
                List<String[]>list = new LinkedList<String[3]>();
        out.flush();
    }

如何发送列表list以及如何接收它?

最佳答案

有几种方法可以实现这一目标:

1.将响应格式化为JSON数组,例如:

[ 
   { competitionId : "6", marks : "2", numberOfQuestions : "3"},
   { competitionId : "2", marks : "1", numberOfQuestions : "5"},
]

然后你的客户端将把这个 JSON 字符串解析成数组

2.创建您自己的分隔字符串结果,例如: 6,2,3|2,1,5

由于您知道响应将是一个包含 3 个元素的数组,因此您可以首先用特殊字符“|”分隔项目,然后对于每个数组项目,用分隔符“,”再次拆分,您将获得您的竞赛 ID,分数和问题数。

这种方法快速简单,但难以维护:如果您添加/删除新元素,或者更改服务器端的分隔符,您的客户端将会崩溃。因此,使用 JSON 方法可能是可行的方法。

关于java服务器将字符串数组列表发送到android客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11335618/

相关文章:

java - 加密难题

java - 如何检查 Firebase Firestore 事务是否已更新到服务器?

java - java httpssession的生命周期

java - 我的 'select'方法的返回类型是否错误?

java - 使用文本定位元素

android - Android 中带有 layout_weight 的线性布局中的无边框按钮

java - 我应该在哪里存储对象列表或 map

tomcat - 带有 url 模式 "/*"的 servlet 映射中的 StackOverflowError

java - Android 应用程序因 NPE 崩溃

java - 从 HashSet 转换为 ArrayList 时顺序丢失