Hallo,
nun hab ich mein Problem aus dem letzten Post hier annährend gelöst (s.u.), aber dafür hab ich nun ein neues......
Ich mache es möglichst kurz:
Ich habe Servlet A:
Dieses liest eine Datei ein und komprimiert sie:
Das was ich gerade auf den GZIPOutputStream eingelesen habe, verschicke ich mit:
(httpConn ist vom Typ httpUrlConnection)
In Servlet B lese ich das nun ein und will die entpackte Datei schreiben mit:
Das sieht für mich soweit eigentlich alles ok, aber leider krieg ich bei der Ausführung folgende Exception:
Das ist in dieser Zeile:
Alle Hits die ich über google damit kriege haben eine andere Ausgangsstellung.....
Kann mir jemand sagen was ich hier falsch mache?
Danke für alle Tips!
nun hab ich mein Problem aus dem letzten Post hier annährend gelöst (s.u.), aber dafür hab ich nun ein neues......
Ich mache es möglichst kurz:
Ich habe Servlet A:
Dieses liest eine Datei ein und komprimiert sie:
Code:
String fileName = "/home/jollyroger/foo.bar";
ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream gzos = new GZIPOutputStream(baos);
byte[] buffer = new byte[ 0xFFFF];
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File(fileName)));
for(int len; (len = bis.read(buffer)) != -1; ) {
gzos.write(len);
}
bis.close();
Das was ich gerade auf den GZIPOutputStream eingelesen habe, verschicke ich mit:
Code:
OutputStreamWriter oStreamWriter = new OutputStreamWriter(httpConn.getOutputStream());
String urlParams = "data=" + new String(baos.toByteArray());
oStreamWriter.write(urlParams, 0, urlParams.length());
oStreamWriter.flush();
(httpConn ist vom Typ httpUrlConnection)
In Servlet B lese ich das nun ein und will die entpackte Datei schreiben mit:
Code:
String dataContentStr = request.getParameter("data");
ByteArrayInputStream dataContent = new ByteArrayInputStream(dataContentStr.getBytes());
GZIPInputStream gzis = new GZIPInputStream(dataContent);
FileOutputStream fos = new FileOutputStream("/home/jollyroger/Desktop/foo.bar");
byte[] buffer = new byte[ 0xFFFF];
for(int len; (len = gzis.read(buffer)) != -1; ) {
fos.write(len);
}
Das sieht für mich soweit eigentlich alles ok, aber leider krieg ich bei der Ausführung folgende Exception:
Code:
java.io.IOException: Not in GZIP format
at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:132)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:58)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:68)
at com.wincornixdorf.filetransfer.sfr.test.TestReceiver.doPost(TestReceiver.java:48)
at com.wincornixdorf.filetransfer.sfr.test.TestReceiver.service(TestReceiver.java:32)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
Das ist in dieser Zeile:
Code:
GZIPInputStream gzis = new GZIPInputStream(dataContent);
Alle Hits die ich über google damit kriege haben eine andere Ausgangsstellung.....
Kann mir jemand sagen was ich hier falsch mache?
Danke für alle Tips!