是否有任何方便的方法來讀取和解析傳入請求中的數據?在Servlet中解析傳入的多部分/表單數據參數的便捷方法
E.g客戶端啓動後請求
URLConnection connection = new URL(url).openConnection();
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
PrintWriter writer = null;
try {
OutputStream output = connection.getOutputStream();
writer = new PrintWriter(new OutputStreamWriter(output, charset), true); // true = autoFlush, important!
// Send normal param.
writer.println("--" + boundary);
writer.println("Content-Disposition: form-data; name=\"param\"");
writer.println("Content-Type: text/plain; charset=" + charset);
writer.println();
writer.println(param);
我不能使用request.getParameter("paramName")
得到PARAM。下面的代碼
BufferedReader reader = new BufferedReader(new InputStreamReader(
request.getInputStream()));
StringBuilder sb = new StringBuilder();
for (String line; (line = reader.readLine()) != null;) {
System.out.println(line);
}
但是顯示我
-----------------------------29772313742745
Content-Disposition: form-data; name="name"
J.Doe
-----------------------------29772313742745
Content-Disposition: form-data; name="email"
[email protected]
-----------------------------29772313742745
什麼是解析傳入的請求的最佳方式的內容?我不想寫我自己的解析器,可能有一個現成的解決方案。
要小心。 apache網站上的一些文檔是錯誤的。例如,他們說你可以在一個FileItemFactory對象上調用setRepository(),因爲任何實現FileItemFactory的對象只有一個方法:createItem()。所以一定要閱讀javadocs。 – Cheruvim 2014-01-22 23:09:07
'getParts()'總是返回零個項目。爲什麼很難在Java和Servlet 3.0中檢索多部分表單?不敢相信! – basZero 2016-09-23 13:08:37
@basZero:重複問題的答案已經解釋了它何時爲空。 – BalusC 2016-09-23 13:15:15