Буферный читатель возвращает ноль - PullRequest
0 голосов
/ 10 августа 2011

Привет, я отправляю ajax-вызов на сервер вот так

$.ajax({
    type: 'POST',
    url: "...",
    dataType:'json',
    data:JSON.stringify(contact),
    success:function(){
        alert("success")
    }

На сервере я обрабатываю этот запрос и пытаюсь прочитать объект json из запроса следующим образом.

StringBuilder sb = new StringBuilder();
try {
        BufferedReader br = new BufferedReader(new 
InputStreamReader(request.getInputStream()));
        String line = null;
        while ((line = br.readLine()) != null) {
            sb.append(line);
        }
    } catch (IOException e) {
    }

но br.readLine () возвращает ноль. Есть идеи, почему это происходит?

Ответы [ 2 ]

1 голос
/ 10 августа 2011

Поскольку вы достигли конца потока.

Из JavaDocs:

Возвращает: Строка, содержащая содержимое строки, не включая символы завершения строки или ноль, если конец потока был достиг

Скорее всего, возвращается пустой результат, проблема в другом месте. Я не знаю, отправляется ли запрос AJAX как тело запроса или как параметр POST. Вместо этого можно использовать request.getParameter ("json"), но сначала проверьте с помощью LiveHttpHeaders, как ваш браузер кодирует запрос и какое имя параметра связано с данными. В этом случае вам вообще не нужно работать с readline.

0 голосов
/ 10 августа 2011

Я проверил это, и нет никаких проблем с тем, как вы используете HTTP-запрос InputStream. Элемент contact, скорее всего, не определен во время запроса. Поэтому он преобразуется в пустую строку JSON. Попробуйте добавить какой-нибудь фиксированный текст в поле «data», и вы увидите, что он работает на стороне сервера.

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