我試圖在Java中獲取發佈數據。看起來應該是最簡單的事情之一吧?我的意思是,HttpServletRequest.getParameter必須做到這一點?那麼你怎麼能得到原始的數據?如何從java中的HttpServletRequest中檢索原始發佈數據
我找到了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()方法 - 沒有人認爲這會有用嗎?
那麼我該如何編寫這種方法,使其始終返回正確的發佈數據?
所以你的回答是,有*沒有辦法做我想做的事情?它不是關於客戶多次發送它。 HttpServletRequest清楚地將發佈數據存儲在某個地方(因爲您總是可以多次獲取發佈參數)。我很欣賞這個答案,我只想完全理解你是在說「不可能」,還是隻是在重新評估我已經發現的東西。 – 2011-02-17 00:23:12