Проблема с чтением входного потока сервлета Java в Google App Engine - PullRequest
2 голосов
/ 13 сентября 2011

Я создаю что-то с помощью Google App Engine и пытаюсь создать Java-сервлет, который считывает необработанные данные POST и что-то с ними делает.Согласно документации сервлета, это должно быть возможно с помощью метода getReader () или метода getInputStream ().Однако, похоже, что каким-то образом, по крайней мере, с сервером разработки App Engine, который работает локально на моем компьютере разработчика, getInputStream () уже был вызван еще до того, как был введен метод doPost.

Мое доказательство этого утверждения таково:следует:

  1. getReader генерирует исключение java.lang.IllegalStateException (см. this )
  2. getInputStream возвращает допустимый поток ввода, но вызывает read () для этого вводапоток возвращает -1 (см. this ).

Я проверил, и я не вызываю getParameter (), прежде чем вызвать getInputStream.getInputStream () - это первая вещь, которую я вызываю в теле метода doPost.

Что здесь не так?

1 Ответ

3 голосов
/ 13 сентября 2011

По этой ссылке из системы отслеживания проблем Google App Engine:

Это связано с тем, что тип контента был отправлен как "application / x-www-form-urlencoded".В этом случае поток читается и отображается как пара ключ-значение, так что вы можете получить доступ к данным как req.getParameter ("ParameterName"), и по той же причине поток пуст.Мы сможем получить доступ к req.getinputStream (), когда тип контента будет отправлен как «application / octet-stream».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...