Привет! Я работаю с 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
, как указано здесь ?