【发布时间】:2011-06-28 18:22:50
【问题描述】:
我正在尝试用 Java 获取发布数据。似乎它应该是最简单的事情之一,对吗?我的意思是, HttpServletRequest.getParameter 必须做对吗?那么如何获取原始帖子数据呢?
我找到HttpServletRequest get JSON POST data 并使用Kdeveloper 的代码从请求中提取帖子数据。它有效,但有一个问题:我只能获得该帖子数据一次。
这是我用 Kdeveloper 的代码制作的方法:
public static String getPostData(HttpServletRequest req) {
StringBuilder sb = new StringBuilder();
try {
BufferedReader reader = req.getReader();
reader.mark(10000);
String line;
do {
line = reader.readLine();
sb.append(line).append("\n");
} while (line != null);
reader.reset();
// do NOT close the reader here, or you won't be able to get the post data twice
} catch(IOException e) {
logger.warn("getPostData couldn't.. get the post data", e); // This has happened if the request's reader is closed
}
return sb.toString();
}
以前我在这个方法结束时关闭了阅读器,但是当方法在同一个请求上运行多次时会导致异常。不关闭它,不会发生异常,但该方法返回一个空字符串。
老实说,应该只公开一个 req.getPostData() 方法 - 没有人认为这会有用吗?
那么我怎样才能编写这个方法,让它总是返回正确的帖子数据呢?
【问题讨论】: