웹 애플리케이션에서 JSON 데이터가 포함된 특정 URL로 POST 요청을 보내고 HttpServletRequest를 사용하고 있습니다. POST 데이터에 액세스합니다. 그러나 요청 매개변수를 열거하면 "cmd" 매개변수만 찾을 수 있고 JSON 데이터는 찾을 수 없습니다.
일반적으로 request.getParameter("paramName)를 사용하여 서블릿에서 GET 및 POST 매개변수를 얻을 수 있습니다. ") 방법. 이는 표준 HTML 형식에서 볼 수 있듯이 POST 데이터가 "application/x-www-form-urlencoded" 콘텐츠 유형의 키-값 쌍으로 인코딩될 때 잘 작동합니다.
귀하의 경우에는 JSON 데이터 스트림을 보내는 경우 request.getReader()에서 액세스할 수 있는 원시 데이터 스트림을 처리하기 위해 사용자 정의 디코더를 사용해야 합니다. 다음은 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... }
요약하자면, JSON POST 데이터를 처리하는 경우 요청 본문에서 직접 처리하려면 사용자 지정 디코더를 사용해야 합니다. 내장된 매개변수 열거 메커니즘에 의존하는 대신
위 내용은 HttpServletRequest를 사용하여 JSON POST 데이터를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!