| ปัญหาใช้ InputStream อ่านค่าจาก HttpServletRequest  บน Servlet ไม่ได้ 
                                      ลองอ่านตรง กับอ่านผ่าน BufferedReader ก็ไม่ได้ ทดสอบ debug พบว่ารองที่สอง ค่าของ InputStream.read() จะจำค่าครั้งก่อนไว้ คือเป็น -1 ทำให้ไม่อ่านข้อมูลในครั้งหลังๆ
 
 ใครทราบแนวทางแก้ไข แนะนำหน่อยครับ
 
 
 
 package com.mmm.servlet.test;
 
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.BufferedReader;
 import java.io.InputStreamReader;
 
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.ServletInputStream;
 
 import org.w3c.dom.Element;
 import com.mmm.util.DOMUtil;
 
 
 /**
 * Servlet implementation class for Servlet: TestServlet
 *
 */
 public class TestServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
 static final long serialVersionUID = 1L;
 
 /* (non-Java-doc)
 * @see javax.servlet.http.HttpServlet#HttpServlet()
 */
 public TestServlet() {
 super();
 }
 
 /* (non-Java-doc)
 * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 // TODO Auto-generated method stub
 doPost(request,response);
 }
 
 /* (non-Java-doc)
 * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 // TODO Auto-generated method stub
 
 
 //StringBuffer outstr = readXML2(request);
 //response.getWriter().println(outstr.toString());
 
 //outstr = readXML2(request);
 //response.getWriter().println(outstr.toString());
 
 //Element root = DOMUtil.toDOM((InputStream)request.getInputStream());
 //String txid = DOMUtil.getValue(DOMUtil.findTag(root, "txid"));
 
 
 response.getWriter().println(request.getQueryString());
 ServletInputStream in = request.getInputStream();
 int i = in.read();
 
 
 
 
 
 
 
 }
 private StringBuffer readXML2(HttpServletRequest request){
 
 
 StringBuffer sbuf = new StringBuffer();
 try{
 //ServletInputStream si=(ServletInputStream)request.getInputStream();
 InputStream si=(InputStream)request.getInputStream();
 boolean bl =si.markSupported();
 
 int i=si.read();
 while(i!= -1){
 sbuf.append((char)i);
 i=si.read();
 }
 }catch(IOException e){
 
 }
 
 return sbuf;
 
 
 
 }
 
 private StringBuffer readXML(HttpServletRequest request){
 StringBuffer stringBuffer = new StringBuffer();
 
 try{
 
 InputStream inStream = (ServletInputStream)request.getInputStream();
 //ServletInputStream inStream = (ServletInputStream)request.getInputStream();
 
 
 
 
 BufferedReader requestData = new BufferedReader(new InputStreamReader(inStream));
 
 String line = "";
 try{
 while ((line = requestData.readLine()) != null)
 {
 stringBuffer.append(line);
 }
 
 
 } catch (Exception e){
 //response.getWriter().println("e1");
 stringBuffer.append("error1");
 }finally{
 //inStream.close();
 //requestData.close();
 }
 }catch(Exception e){
 stringBuffer.append("error2"+e.getMessage());
 }
 return stringBuffer;
 
 }
 
 
 }
 |