我正在尝试用Java获取post数据。看起来这应该是最简单的事情之一,对吧?我的意思是,HttpServletRequest.getParameter必须这样做,对吗?那么,如何获得原始的post数据呢?
我找到了HttpServletRequest get JSON POST data,并使用Kdeveloper的代码从请求中提取post数据。它是有效的,但有一个问题:我只能获取一次post数据。
下面是我从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()方法-没有人认为这会有用吗?
那么,如何编写此方法以使其始终返回正确的post数据呢?
https://stackoverflow.com/questions/5023718
复制相似问题