Hi All, I am doing a HTTP POST on a servlet running on my local box. For this, I am opening a socket on port 80 and sending the data. When I call getReader() on HttpServletRequest object, I cannot find any data. Instead of Calling getReader(), if I call getParameter() or getParameterMap() on HttpServletRequest object, I can retrieve the data which has been posted This works well on Linux 4 with apache version 2.0 and tomcat version 4.X and jk2 i.e. getReader returns data. The issue is seen on Linux 5 with apache version 2.2.3 and same tomcat version 4.X and mod_jk1.2.27. Any clues as to what is going wrong? Using tcpdump, I have seen the request - It looks as expected. ------------------------------------------------------------------------ ---------------------- POST /servlet/Help HTTP/1.0 Content-Length: 17 Content-Type: application/x-www-form-urlencoded Want to send this ------------------------------------------------------------------------ ---------------------- SERVER CODE: -------------------- getReader() on HttpServletRequest object returns me BufferedReader object. If I call read() on buffer, I get -1. If I call readLine() on buffer, I get NULL. This is how I am calling in my servlet: java.io.BufferedReader _buffer = req.getReader(); System.out.println("****Is Buffer object ready " + _buffer.ready()); System.out.println("****Is Buffer object char: " + _buffer.read()); System.out.println("****Is Buffer object line: " + _buffer.readLine());
Instead of Calling getReader(), if I call getParameter() or getParameterMap() on HttpServletRequest object, I can retrieve the data which has been posted. CLIENT CODE: ----------------- // Construct data String data = "Sending simple data"; // Create a socket to the host String hostname = "127.0.0.1"; int port = 80; InetAddress addr = InetAddress.getByName(hostname); Socket socket = new Socket(addr, port); // Send header String path = "/servlet/Help"; BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF8")); wr.write("POST "+path+" HTTP/1.0\r\n"); wr.write("Content-Length: "+data.length()+"\r\n"); wr.write("Content-Type: application/x-www-form-urlencoded\r\n"); wr.write("\r\n"); // Send data wr.write(data); wr.flush(); // Get response BufferedReader rd = new BufferedReader(new InputStreamReader(socket.getInputStream())); String line; while ((line = rd.readLine()) != null) { // Process line... System.out.println(line); } wr.close(); rd.close(); Regards, Swati