ServletInputStream is = request.getInputStream();
BufferedReader reader = new BufferedReader(
new InputStreamReader(is));
String result = null;
while( (result = reader.readLine()) != null) {
}
Суть ошибки: данные не считываются (строка result — пустая и тип исключения String:nulljava.lang.NullPointerException ), при этом обращение к сервлету осуществляется т.к. метод doPost выполняется. Помогите, пожалуйста, поправить код, либо подскажите лучший вариант реализации. Заранее спасибо.
Здравствуйте, jokingless, Вы писали:
J>Суть ошибки: данные не считываются (строка result — пустая и тип исключения String:nulljava.lang.NullPointerException ), при этом обращение к сервлету осуществляется т.к. метод doPost выполняется. Помогите, пожалуйста, поправить код, либо подскажите лучший вариант реализации. Заранее спасибо.
Код какой-то не дописаный. Анализ переменной result точно происходит в цикле а не за его пределами?
Здравствуйте, Blazkowicz, Вы писали:
B>Здравствуйте, jokingless, Вы писали:
J>>Суть ошибки: данные не считываются (строка result — пустая и тип исключения String:nulljava.lang.NullPointerException ), при этом обращение к сервлету осуществляется т.к. метод doPost выполняется. Помогите, пожалуйста, поправить код, либо подскажите лучший вариант реализации. Заранее спасибо. B>Код какой-то не дописаный. Анализ переменной result точно происходит в цикле а не за его пределами?
В принципе мне пока что не важно полнота данных, а важното, что данные теряются где-то и строка result остается пустой даже после чтения в нее потока. Т.е. не важно место реализации result, а то, что при любой реализации эта строка остается пуста.
А>Если я не ошибаюсь, то нужно ещё вызвать метод conn.getResponseCode(); чтобы послать запрос в сервлет.
Почему-то мне кажеться, что этот метод лишь возвращает инт число, которое и есть ответом сервера на запрос, в связи с этим мне непонятно как он может что-то попрравить в коде.
А>Если я не ошибаюсь, то нужно ещё вызвать метод conn.getResponseCode(); чтобы послать запрос в сервлет.
Верно. В post пока на клиенте на перейдете к чтению ответа, т.е. не откроете inputstream или не сделаете conn.getResponseCode(), ничего на сервер передаваться не будет. На сервер данные из буфера клиента будут отосланы именно при указанных действиях, которые означают , что запись данных окончена. Это типа защита такая, потому что согласно http в хедере запроса надо указать размер данных. Если приступили к чтению, значит ничего писать больше не будете (и не получится).
Здравствуйте, mselez, Вы писали:
M>Верно. В post пока на клиенте на перейдете к чтению ответа, т.е. не откроете inputstream или не сделаете conn.getResponseCode(), ничего на сервер передаваться не будет. На сервер данные из буфера клиента будут отосланы именно при указанных действиях, которые означают , что запись данных окончена. Это типа защита такая, потому что согласно http в хедере запроса надо указать размер данных. Если приступили к чтению, значит ничего писать больше не будете (и не получится).
Не совсем. Поле content-length — опционально. Никто не мешает отсылать непрерывный поток url-encoded данных.
Более того, такой подход может быть использован для непрерывного обновления данных на сервере.
Здравствуйте, Cyberax, Вы писали:
C>Здравствуйте, mselez, Вы писали:
M>>Верно. В post пока на клиенте на перейдете к чтению ответа, т.е. не откроете inputstream или не сделаете conn.getResponseCode(), ничего на сервер передаваться не будет. На сервер данные из буфера клиента будут отосланы именно при указанных действиях, которые означают , что запись данных окончена. Это типа защита такая, потому что согласно http в хедере запроса надо указать размер данных. Если приступили к чтению, значит ничего писать больше не будете (и не получится). C>Не совсем. Поле content-length — опционально. Никто не мешает отсылать непрерывный поток url-encoded данных.
C>Более того, такой подход может быть использован для непрерывного обновления данных на сервере.
For compatibility with HTTP/1.0 applications, HTTP/1.1 requests containing a message-body MUST include a valid Content-Length header field unless the server is known to be HTTP/1.1 compliant.
URLConnection удовлетворяет требованию совместимости с HTTP/1.0.