【发布时间】:2009-06-30 21:27:28
【问题描述】:
我正在尝试获取 HttpServletRequest 的内容。这是我的做法:
// Extract the request content
StringBuilder stringBuilder = new StringBuilder();
BufferedReader bufferedReader = null;
String content = "";
try {
InputStream inputStream = request.getInputStream();
if (inputStream != null) {
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
char[] charBuffer = new char[128];
int bytesRead = -1;
while ((bytesRead = bufferedReader.read(charBuffer)) > 0) {
stringBuilder.append(charBuffer, 0, bytesRead);
}
} else {
stringBuilder.append("");
}
} catch (IOException ex) {
throw ex;
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException ex) {
throw ex;
}
}
}
content = stringBuilder.toString();
System.out.println("Length: " + request.getContentLength());
字符串“内容”为空。但是,最后一行显示
长度:53
这正是我期望的内容的长度。如果有帮助,这是我触发此 servlet 的方式:
wget --post-data='{"imei":"351553012623446","hni":"310150","wdp":false}' http://localhost:8080/test/forward
【问题讨论】:
-
您使用的是什么 servlet 容器?您的代码在 Tomcat 6.0.18 中适用于我。
-
Tomcat 6.0.20 所以你在“内容”中得到了一些东西?
-
你如何验证“内容”的价值?
-
@pensador 是的,我在您的代码中添加了 System.out.println("content==" + content) 并且我看到了来自 wget 的发布数据。
-
@Jack Leow:我尝试在调试模式下运行服务器并检查“内容”并使用 System.out.println() 在控制台上显示它。 @John Wagenleitner:知道我这边可能出了什么问题吗?
标签: java jakarta-ee servlets