source

Http ServletRequest가 JSON POST 데이터를 가져옵니다.

factcode 2022. 10. 14. 22:37
반응형

Http ServletRequest가 JSON POST 데이터를 가져옵니다.

저는 URL http://http:8080/http/services/rpc?http=http:/http:8080/http:/http:/http:

POST 데이터 포함

{ "jsondata" : "data" }

Http 요청의 Content-Type은application/json; charset=UTF-8

HttpServletRequest에서 POST 데이터(jsondata)를 가져오려면 어떻게 해야 하나요?

요청 매개 변수를 열거하면 POST 데이터가 아닌 "cmd"라는 매개 변수만 볼 수 있습니다.

일반적으로 GET 파라미터와 POST 파라미터는 서블릿에서 동일한 방법으로 사용할 수 있습니다.

request.getParameter("cmd");

다만, 표준 HTML 폼을 사용하는 경우와 같이, 컨텐츠 타입의 키와 값의 쌍으로서 POST 데이터가 부호화되어 있는 경우 뿐입니다.「 application / x - www - form - urlencoded 」

json 데이터 스트림을 게시할 때처럼 포스트 데이터에 다른 인코딩 스키마를 사용하는 경우 다음과 같은 원시 데이터 스트림을 처리할 수 있는 사용자 지정 디코더를 사용해야 합니다.

BufferedReader reader = request.getReader();

Json 후 처리 예(org.json 패키지 사용)

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...
}

다른 소스(포트 또는 호스트명)에서 투고하고 있습니까?그렇다면, 제가 방금 답변한 이 매우 최근의 주제가 도움이 될 것입니다.

문제는 XHR 크로스 도메인정책으로, JSONP라고 불리는 기술을 사용하여 XHR을 회피하는 방법에 대한 유용한 힌트입니다.큰 단점은 JSONP가 POST 요구를 지원하지 않는다는 것입니다.

원래 게시물에는 JavaScript에 대한 언급은 없지만 JSON은 보통 JavaScript에 사용되기 때문에 성급하게 결론을 내렸습니다.

언급URL : https://stackoverflow.com/questions/3831680/httpservletrequest-get-json-post-data

반응형