gpt4 book ai didi

java - 将数据从 Servlet 返回到 Java 客户端

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:47:16 26 4
gpt4 key购买 nike

您好,我在将数据从 Servlet 返回到 Java 客户端时遇到了问题。这是我第一次使用 servlet。我在网上看到的所有示例都将数据返回到 HTML 页面,但我想制作一个服务器-客户端软件,其中服务器执行某些操作并返回一个字符串列表。

如何从 GET/POST 方法返回数组给客户端?我在 setContentType 中设置了什么?我不明白如何将我想要的信息(如 int 、 array 、 String )作为响应并返回给客户端。

如果有人可以举一个例子,其中 Java 客户端发出 POST 请求并且 Servlet 返回给他一个 Array 或 ArrayList,我会非常高兴。

最佳答案

您遇到了序列化 的问题。序列化是将一些数据转换成可以传输的格式的地方。有几种方法可以做到这一点,其他答案中提到了一些。

我建议使用 JSON 作为格式。您可以从 json.org 获得一个不错的 Java JSON 库。 .然后您可以简单地使用该库创建一个 JSON 数组并将其写入 servlet 的 OutputStream。

public void service(ServletRequest req, ServletResponse res) {
final JSONArray arr=new JSONArray();
for (String s : this.myListOfStrings){
arr.put(s);
}
//Here we serialize the stream to a String.
final String output = arr.toString();
res.setContentLength(output.length());
//And write the string to output.
res.getOutputStream().write(output.getBytes());
res.getOutputStream().flush();
res.getOutputStream().close();
}

现在从您的客户端,您可以像这样发出请求并取回您的 ArrayList:

public ArrayList<String> contactServer(){
final URL url = new URL(serverURL);
final URLConnection connection=url.openConnection();
connection.setDoOutput(true);
/*
* ...
* write your POST data to the connection.
* ...
*/
final BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
final char[] buffer=new char[Integer.parseInt(connection.getHeaderField("Content-Length"))];
int bytesRead=0;
while (bytesRead < buffer.length){
bytesRead += br.read(buffer, bytesRead, buffer.length - bytesRead + 1);
}
final JSONArray arr = new JSONArray(new String(buffer));
final ArrayList<String> ret = new ArrayList<String>(arr.length());
for (int i=0; i<arr.length(); i++) {
ret.add(arr.get(i));
}
return ret;
}

关于java - 将数据从 Servlet 返回到 Java 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7837814/

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