【发布时间】:2015-03-16 14:47:54
【问题描述】:
我有一个 servlet,它通过 POST 方法接收一个大的 JSON 字符串(> 10,000 个字符)。
如果我这样阅读请求的内容:
try(Reader reader = new InputStreamReader(new BufferedInputStream(request.getInputStream()), StandardCharsets.UTF_8))
{
char[] buffer = new char[request.getContentLength()];
reader.read(buffer);
System.out.println(new String(buffer));
}
我没有得到全部内容!缓冲区大小是正确的。但是创建的字符串的长度不是。
但如果我这样做:
try(BufferedInputStream input = new BufferedInputStream(request.getInputStream()))
{
byte[] buffer = new byte[request.getContentLength()];
input.read(buffer);
System.out.println(new String(buffer, StandardCharsets.UTF_8));
}
效果很好。
那么在第一种情况下我哪里错了?
【问题讨论】:
标签: java servlets encoding http-post inputstream