Dalam aplikasi web anda, anda menghantar permintaan POST ke URL tertentu dengan data JSON dan anda menggunakan HttpServletRequest untuk mengakses data POST. Walau bagaimanapun, apabila anda menghitung parameter permintaan, anda hanya boleh mencari parameter "cmd" tetapi bukan data JSON.
Biasanya, anda boleh mendapatkan parameter GET dan POST dalam servlet menggunakan request.getParameter("paramName ") kaedah. Ini berfungsi dengan baik apabila data POST dikodkan sebagai pasangan nilai kunci dengan jenis kandungan "application/x-www-form-urlencoded", seperti yang dilihat dalam borang HTML standard.
Dalam kes anda, kerana anda sedang menghantar strim data JSON, anda perlu menggunakan penyahkod tersuai untuk memproses strim data mentah yang boleh diakses daripada request.getReader(). Berikut ialah contoh cara anda boleh mengendalikan pemprosesan JSON POST:
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { StringBuffer jb = new StringBuffer(); String line = null; try { BufferedReader reader = request.getReader(); while ((line = reader.readLine()) != null) jb.append(line); } catch (Exception e) { /*report an error*/ } try { JSONObject jsonObject = HTTP.toJSONObject(jb.toString()); } catch (JSONException e) { // crash and burn throw new IOException("Error parsing JSON request string"); } // Work with the data using methods like... // int someInt = jsonObject.getInt("intParamName"); // String someString = jsonObject.getString("stringParamName"); // JSONObject nestedObj = jsonObject.getJSONObject("nestedObjName"); // JSONArray arr = jsonObject.getJSONArray("arrayParamName"); // etc... }
Ringkasnya, jika anda berurusan dengan data JSON POST, anda perlu menggunakan penyahkod tersuai untuk memprosesnya terus daripada badan permintaan, dan bukannya bergantung pada mekanisme penghitungan parameter terbina dalam.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Data JSON POST Menggunakan HttpServletRequest?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!