GZIP JSON AJAX Текст ответа пуст - PullRequest
3 голосов
/ 16 ноября 2009

Я столкнулся с проблемой при кодировании ответа, который я отправляю обратно для запроса AJAX, используя GZIP. Кто-нибудь может дать мне несколько советов по этому вопросу, пожалуйста?

  1. Есть запрос AJAX от JSP,
  2. Класс действия (Struts) на стороне сервера обрабатывает запрос,
  3. Ответ подготовлен как объект JSON,
  4. Строка JSON записывается в объект Response и отправляется обратно,
  5. строка JSON считывается из свойства responseText объекта xmlHttp обратно в jsp

Это отлично работает. Однако вместо отправки необработанных данных JSON, если я отправляю обратно закодированные данные JSON, возникают проблемы.

Код на стороне сервера для создания GSON-JSON:

// jsonStr = JSONObj.toString();  
ByteArrayOutputStream bos = new ByteArrayOutputStream();  
GZIPOutputStream gzip = new GZIPOutputStream(bos);  
gzip.write(jsonStr.getBytes());  
gzip.close();  
String newStr = new String(bos.toByteArray());  
// set the response header and send Encoded JSON response  
response.setHeader("Content-Type", "application/json");  
response.setHeader("Content-Encoding", "gzip");  
response.setHeader("Vary", "Accept-Encoding");  
pw = response.getWriter();  
pw.write(newStr);  
pw.close();

В JSP:

// marker  
alert('Length of the received Response Text : ' + xmlHttp.responseText.length);
// evaluate the JSON  
jsonStr = eval('(' + xmlHttp.responseText + ')');

Окно предупреждения при получении ответа сообщает о длине как 0!

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