ServletRequest: получение пустых данных при чтении getReader - PullRequest
0 голосов
/ 17 января 2019

Привет! Я работаю с ServletRequest и заметил, что не могу прочитать опубликованные данные с ContentType x-www-form-urlencoded .
Однако я не могу чтобы успешно прочитать опубликованные данные, изменив ContentType на application / json .

Пожалуйста, посмотрите мой фрагмент кода ниже:

POST /myservlet
ContentType - application/x-www-form-urlencoded
data: JSON.stringify({"request":[{"color": "blue","answer": 55}]})

Фильтр: * +1016 *

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain){
    req.getParameter(..);
    chain.doFilter(req, res);
}

Код сервлета:

BufferedReader br = request.getReader();
while ((str = br.readLine()) != null) {
    wholeStr += str;
}
---Getting empty data here

Но когда я изменяю тип контента запроса на application / json , код выше работает отлично и может читать данные JSON в сервлете.


Запрос:
1. Почему я получаю такое поведение, когда могу читать данные, используя application/json, но получаю пустые данные, используя x-www-form-urlencoded?

2. Если getParameter() внутренне использует поток ввода, который читает мои данные, почему это поведение не работает в случае application/json, как указано здесь ?

...