servlets - HttpServletRequest#getReader() is empty in GlassFish 4 -


i have strange problem under glassfish 4. i'm sending raw data in post request (using jquery) servlet. reading data in dopost through request.getreader() fail reader empty (-1 returned immediately). if change code:

reader reader = request.getreader(); 

to:

bufferedreader reader = new bufferedreader( new inputstreamreader( request.getinputstream() ) ); 

is succeed. note request.getreader() not empty when using tomcat 6,7 or jetty. have idea wrong glassfish 4? here complete simple snippet demonstrate issue:

package test.servlet;  import java.io.ioexception; import java.io.reader; import java.io.writer;  import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse;  public class testservlet extends httpservlet {    @override   protected void doget( httpservletrequest request, httpservletresponse response )     throws servletexception, ioexception   {     writeinitialpage( response );   }    @override   protected void dopost( httpservletrequest request,                          httpservletresponse response )     throws servletexception, ioexception   {     writedata( response, readdata( request ) );   }    private void writedata( httpservletresponse response, string data ) throws ioexception {     writer writer = response.getwriter();     for( int = 0; < data.length(); i++ ) {       writer.write( data.charat( ) );     }   }    private string readdata( httpservletrequest request ) throws ioexception {     reader reader = request.getreader(); //    bufferedreader reader = new bufferedreader( new inputstreamreader( request.getinputstream() ) );     stringbuilder buffer = new stringbuilder();     int current = reader.read();     while( current != -1 ) {       char ch = ( char )current ;       buffer.append( ch );       current = reader.read();     }     reader.close();     return buffer.tostring();   }    private void writeinitialpage( httpservletresponse response ) throws ioexception {     writer writer = response.getwriter();     writer.write( "<html>" );     writer.write( "<head>" );     writer.write( "<script type=\"text/javascript\" src=\"/test/js/jquery-1.10.2.min.js\"></script>" );     writer.write( "</head>" );     writer.write( "<body>" );     writer.write( "<button type=\"button\" onclick=\"" );     writer.write( "$.ajax('/test/test',{" );     writer.write( "'data': 'data1 data2 data3 data4 data5 data6 data7 data8 data9 data10'," );     writer.write( "'type': 'post'," );     writer.write( "'processdata': false," );     writer.write( "'contenttype': 'text/plain'" );     writer.write( "});" );     writer.write( "\">send</button>" );     writer.write( "</body>" );     writer.write( "</html>" );   }  } 


Comments

Popular posts from this blog

How to mention the localhost in android -

php - Calling a template part from a post -

c# - String.format() DateTime With Arabic culture -