HttpServletRequest 수신 및 해석 JSON 데이터 가 져 오기

2767 단어
최근 Security 권한 을 만 들 때 attemptAuthentication 인터페이스 에서 로그 인 파 라 메 터 를 받 을 때 request 만 사용 할 수 있 습 니 다. 하지만 현재 많은 프로젝트 들 이 앞 뒤 가 분 리 된 개발 모델 을 사용 하고 있 습 니 다.
예전 처럼 저희 가 Controller 에서 json 데이터 변환 을 처리 할 때 @ RequestBody 주석 만 표시 하면 됩 니 다.
문제 가 있 으 면 해결 해 야 합 니 다. debug 를 열 어 request 의 필드 내용 을 찾 아 보 았 지만 제 가 필요 로 하 는 JSon 데 이 터 를 발견 하지 못 했 습 니 다. 한때 까다 로 웠 기 때문에 결국 구 글 을 대상 으로 프로 그래 밍 을 해 야 했 습 니 다.
다음은 도구 류 입 니 다.
public class GetRequestJsonUtils {
    public static JSONObject getRequestJsonObject(HttpServletRequest request) throws IOException {
        String json = getRequestJsonString(request);
        return JSONObject.parseObject(json);
    }
    /***
     *    request   json       
     *
     * @param request
     * @return : byte[]
     * @throws IOException
     */
    public static String getRequestJsonString(HttpServletRequest request)
            throws IOException {
        String submitMehtod = request.getMethod();
        // GET
        if (submitMehtod.equals("GET")) {
            return new String(request.getQueryString().getBytes("iso-8859-1"),"utf-8").replaceAll("%22", "\"");
            // POST
        } else {
            return getRequestPostStr(request);
        }
    }

    /**
     *   :   post     byte[]   
     * 

     *   :
     * 
* @param request
* @return
* @throws IOException
*/
public static byte[] getRequestPostBytes(HttpServletRequest request)
throws IOException {
int contentLength = request.getContentLength();
if(contentLength<0){
return null;
}
byte buffer[] = new byte[contentLength];
for (int i = 0; i < contentLength;) {
int readlen = request.getInputStream().read(buffer, i,
contentLength - i);
if (readlen == -1) {
break;
}
i += readlen;
}
return buffer;
}
/**
* 설명: post 요청 내용 가 져 오기
*

     *   :
     * 
* @param request
* @return
* @throws IOException
*/
public static String getRequestPostStr(HttpServletRequest request)
throws IOException {
byte buffer[] = getRequestPostBytes(request);
String charEncoding = request.getCharacterEncoding();
if (charEncoding == null) {
charEncoding = "UTF-8";
}
return new String(buffer, charEncoding);
}
}
마지막 으로 우 리 는 request 를 GetRequestJSonUtils 에 전송 하여 JSonobject 대상 으로 돌아 가 야 합 니 다.
JSONObject json = GetRequestJsonUtils.getRequestJsonObject(request);
String username = json.getString(usernameParameter);
String password = json.getString(passwordParameter);

원본 주소:https://blog.csdn.net/tengdazhang770960436/article/details/50149061

좋은 웹페이지 즐겨찾기