You will probably find it's bytes >127dec that are getting mucked up. In the
char/byte conversion the
sign bit seems to do some funny stuff when converted. As a quick test create
a binary file with low value ( < 127 ) bytes and see if it transfers ok. You
will need to make sure your reader is using 
ISO-8859-1 to fix the problem, or even better dont use character readers at
all.


-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, February 14, 2001 1:39 PM
To: [EMAIL PROTECTED]
Subject: AW: Hi Ho - Problem with ServletOutputStream in Tomcat


thx for your info

i used write but my next problem is that the binary content gets somehow
translated and isnt the same as before - for example gif images arent
displayed correctly --- pdf are displayed wrong -- and so on ... well i dont
have a clue why.

greetings Wolfgang

-----Ursprüngliche Nachricht-----
Von: Samson, Lyndon [IT] [mailto:[EMAIL PROTECTED]]
Gesendet: Mittwoch, 14. Februar 2001 14:32
An: '[EMAIL PROTECTED]'
Betreff: RE: Hi Ho - Problem with ServletOutputStream in Tomcat


This is true, I wrote a multipart/form-data parser and the only character
set which preserved
binary data was ISO-8859-1. Conversions between bytes and characters only
work with this encType, your input and output should both use this if you
use characters to store binary data. 

Output streams are supposed to output bytes, the print in the
ServletOutputStream method converts a char to a byte array, you'd be better
off using the write(byte[] b) method of the base OutputStream class.




-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, February 14, 2001 12:45 PM
To: [EMAIL PROTECTED]
Subject: Hi Ho - Problem with ServletOutputStream in Tomcat


I ve created an Servlet that routes Requests and Responses to and from
another Server.

When i try to get a Image through this Servlet i get an Error 500. I coded
the app as described in the j2ee docu for sending binary data.

maybee a little code snipplet and the error trace helps to understand

http://127.0.0.1:8080/maria/portal/zmr/javalogo52x88.gif

this is the url -- http://127.0.0.1:8080 - is my Tomcat instance
/maria/portal - is my proxy servlet
/zmr/javalogo52x88.gif is the image i want to display in my browser -> but
/zmr is another webapplication on another tomcat server


heres the code for the binary data receiving and sending to the client
----------------
        // Setting the Headers for the Client same as the Servlet received
them from the other server
        while ((strHeaderKey = HttpUrlCon.getHeaderFieldKey(iCounter)) !=
null)
        {
            strHeaderValue = HttpUrlCon.getHeaderField(iCounter);

            LogIt("ResponseHeader - Value: " + strHeaderKey + " - " +
strHeaderValue);
            response.setHeader(strHeaderKey,strHeaderValue);

            iCounter +=1;
        }

          // figuring out which type of data the servlet is getting
        if (HttpUrlCon.getContentType().equals("text/html"))
        {
              // Text or HTML -> thats where i use the PrintWriter
            PrintWriter out = response.getWriter();
            int iByte;
            while ((iByte = brInput.read()) != -1)
            {
                out.print((char) iByte);
            }
        }
        else
        {
            try
            {
                  // Everything else assuming its binary data so i use
ServletOutputStream
                ServletOutputStream out =
((ServletResponse)response).getOutputStream();
                int iByte;
                while ((iByte = brInput.read()) != -1)
                {
                    out.print((char) iByte);
                }
            }
            catch (IOException e)
            {
                this.log("IOException !!",e);
            }
        }
--------------------


heres the error trace i get when i try to process it -----

2001-02-14 01:26:43 - path="/maria" :proxy: ResponseHeader - Value:
Content-Type - image/gif
2001-02-14 01:26:43 - path="/maria" :proxy: ResponseHeader - Value:
Content-Length - 1495
2001-02-14 01:26:43 - path="/maria" :proxy: ResponseHeader - Value:
Last-Modified - Tue, 13 Feb 2001 10:07:22 GMT
2001-02-14 01:26:43 - path="/maria" :proxy: ResponseHeader - Value:
Servlet-Engine - Tomcat Web Server/3.2.1 (JSP 1.1; Servlet 2.2; Java 1.3.0;
Windows 2000 5.0 x86; java.vendor=Sun Microsystems Inc.)
2001-02-14 01:26:43 - path="/maria" :proxy: IOException !! -
java.io.IOException: Not an ISO 8859_1 character:^
        at
org.apache.tomcat.core.BufferedServletOutputStream.print(BufferedServletOutp
utStream.java:221)
        at
javax.servlet.ServletOutputStream.print(ServletOutputStream.java:177)
        at at.gv.bmi.maria.proxy.ReturnData(proxy.java:201)
        at at.gv.bmi.maria.proxy.doGet(proxy.java:63)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at
org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)
        at org.apache.tomcat.core.Handler.service(Handler.java:286)
        at
org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
        at
org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:79
7)
        at
org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
        at
org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpC
onnectionHandler.java:210)
        at
org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)
        at
org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:498)
        at java.lang.Thread.run(Thread.java:484)



--------------------



please help me, its important and i dont know how to solve this problem - in
my opinion its a problem in the
org.apache.tomcat.core.BufferedServletOutputStream Class ?? why does it need
a ISO 8859_1 Charset for Binary Data ???

greetings 
Wolfgang Kremser

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to