我看到了这个例外:
java.net.SocketTimeoutException:尝试从套接字读取数据的超时
以下是生成它的代码:
public static String extractBody(HttpServletRequest request) {
StringBuffer sb = new StringBuffer();
String line = null;
try {
//BufferedReader reader = request.getReader();
BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream()));
while ((line = reader.readLine()) != null) {
sb.append(line);
}
} catch (Exception e) {
logger.fatal("Failed to read from socket with content-length: {}", request.getHeader("Content-Length"));
e.printStackTrace();
}
return sb.toString();
}
当它发生时,写入的内容长度不为零。就像这样
Failed to read from socket with content-length: 279645
造成此超时的原因是什么?套接字是否被客户端未关闭?还有其他我想念的东西吗?我是否应该从servlet请求中读取正文数据?大多数请求工作正常,我有时只看到这个错误,但它可能是某个客户端版本或平台或其他东西。
答案 0 :(得分:0)
内容长度标题与实际内容长度不匹配,正在等待更多数据。