I heard WebResponse automatically unpack the response when the server send gzipped response. So I tried to test gzipped response from servlet, but when I tried to get a response from server, I get following error message
null
java.io.EOFException
at java.util.zip.GZIPInputStream.readUByte(GZIPInputStream.java:200)
at java.util.zip.GZIPInputStream.readUShort(GZIPInputStream.java:190)
at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:130)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:58)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:68)
at com.meterware.httpunit.WebResponse.defineRawInputStream(WebResponse.java:739)
at com.meterware.httpunit.HttpWebResponse.<init>(HttpWebResponse.java:57)
at com.meterware.httpunit.WebConversation.newResponse(WebConversation.java:61)
at com.meterware.httpunit.WebWindow.getResource(WebWindow.java:162)
at com.meterware.httpunit.WebWindow.getSubframeResponse(WebWindow.java:125)
at com.meterware.httpunit.WebWindow.getResponse(WebWindow.java:118)
at com.meterware.httpunit.WebWindow.getResponse(WebWindow.java:99)
at com.meterware.httpunit.WebClient.getResponse(WebClient.java:86)
I'm testing against this servlet code that I found on newsgroup.
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
ByteArrayOutputStream buf = new ByteArrayOutputStream();
GZIPOutputStream gzipOut = new GZIPOutputStream(buf);
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(gzipOut, "UTF-8");
PrintWriter out = new PrintWriter(outputStreamWriter);
out.println("<html><body>");
out.print("Hi");
out.println("</body></html>");
out.close();
I heard WebResponse automatically unpack the response when the server send gzipped response. So I tried to test gzipped response from servlet, but when I tried to get a response from server, I get following error message
null
java.io.EOFException
at java.util.zip.GZIPInputStream.readUByte(GZIPInputStream.java:200)
at java.util.zip.GZIPInputStream.readUShort(GZIPInputStream.java:190)
at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:130)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:58)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:68)
at com.meterware.httpunit.WebResponse.defineRawInputStream(WebResponse.java:739)
at com.meterware.httpunit.HttpWebResponse.<init>(HttpWebResponse.java:57)
at com.meterware.httpunit.WebConversation.newResponse(WebConversation.java:61)
at com.meterware.httpunit.WebWindow.getResource(WebWindow.java:162)
at com.meterware.httpunit.WebWindow.getSubframeResponse(WebWindow.java:125)
at com.meterware.httpunit.WebWindow.getResponse(WebWindow.java:118)
at com.meterware.httpunit.WebWindow.getResponse(WebWindow.java:99)
at com.meterware.httpunit.WebClient.getResponse(WebClient.java:86)
I'm testing against this servlet code that I found on newsgroup.
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setHeader("Cache-Control", "no-store");
resp.setHeader("Content-Encoding", "gzip");
resp.setContentType("text/html; charset=UTF-8");
ByteArrayOutputStream buf = new ByteArrayOutputStream();
GZIPOutputStream gzipOut = new GZIPOutputStream(buf);
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(gzipOut, "UTF-8");
PrintWriter out = new PrintWriter(outputStreamWriter);
out.println("<html><body>");
out.print("Hi");
out.println("</body></html>");
out.close();
resp.setContentLength(buf.size());
resp.getOutputStream().write(buf.toByteArray());
}
And this is httpunit test case.
public void testGzippedResponse()
throws Throwable {
String targetApp = "http://localhost:9080/Gzipped/Gzipped";
WebConversation wc = new WebConversation();
String returnedPage = wc.getResponse(targetApp).getText();
String message = "Hi";
int index = returnedPage.indexOf(message);
assertTrue("Returned page didn't include \"" + message + "\"",
-1 != index);
}
Anyone can tell me what went wrong?
Thanks