Dear all,
   
  I think something is wrong with parsing parameters for get requests with 
binary encoding, although request.getCharacterEncoding() is null, the output is 
different in red hat linux, consider the following test case:
   
  ------------ Servlet code ------------
   protected void doGet(HttpServletRequest request, HttpServletResponse res) 
throws ServletException, IOException {
  System.out.println( "Query String is " + request.getQueryString() );
    String text = request.getParameter( "text" );
  for( byte b : text.getBytes() )
   System.out.print( "0x" + Integer.toHexString( b ) + ' ' );
}
   
  ------------ client code ------------
    get( "http://host:port/app/servletname?text=%24%F6%10%30%00"; );

   private static String get(String url) throws IOException {
  try {
   
   URL _url = new URL(url);
   InputStream _is = _url.openStream();
   int length = _is.available();
   byte[] _out = new byte[length];
   _is.read(_out, 0, length);
   _is.close();
   return new String(_out);
  } catch (Exception e) {}
  return null;
 }
   
  ------------ end of code ------------
  Windows Output:
   
  Query String is text=%24%F6%10%30%00
0x24 0xfffffff6 0x10 0x30 0x0
   
  Linux output:
  Query String is text=%24%F6%10%30%00
0x24 0xffffffc3 0xffffffb6 0x10 0x30 0x0

   
  version used is:
  Using CATALINA_BASE:   /usr/tomcat
Using CATALINA_HOME:   /usr/tomcat
Using CATALINA_TMPDIR: /usr/tomcat/temp
Using JRE_HOME:       /usr/java/jdk1.5.0_06
Server version: Apache Tomcat/5.5.16
Server built:   Mar 4 2006 08:22:29
Server number:  5.5.16.0
OS Name:        Linux
OS Version:     2.4.21-32.0.1.ELsmp
Architecture:   i386
JVM Version:    1.5.0_06-b05
JVM Vendor:     Sun Microsystems Inc.

  What do you think the reason for this discripancy?
   
  Many thanks in advance,
   
  Yours,
  Ahmed Ashour

                
---------------------------------
Yahoo! Mail
Bring photos to life! New PhotoMail  makes sharing a breeze. 

Reply via email to