当前位置: 代码迷 >> Java Web开发 >> 奇怪!HttpServletRequest的getInputStream()方法?该如何解决
  详细解决方案

奇怪!HttpServletRequest的getInputStream()方法?该如何解决

热度:48   发布时间:2016-04-17 15:35:56.0
奇怪!!!!!HttpServletRequest的getInputStream()方法?????
通过表单向一个servlet的doPost方法提交请求,para=12345,doPost内容如下:
protected   void   doPost(HttpServletRequest   arg0,   httpServletResponse   arg1)   throws   ServletException,   IOException   {

InputStream   in=arg0.getInputStream();
byte[]   b=new   byte[in.available()];
in.read(b);
for(byte   i   :   b){
System.out.println(i)   ;
          }
}
本想从request输入流中读出内容到字节数组,但in.available()总是为0,迷惑!!
但是换成以下内容,就会输出   ”para=12345“:
InputStreamReader   isr   =   new   InputStreamReader   (in);
BufferedReader   br   =   new   BufferedReader   (isr);
                          System.out.println(br.readLine())   ;

这是为什么啊

------解决方案--------------------
查文档得到的结果:
public int available()
throws IOException返回此输入流方法的下一个调用方可以不受阻塞地从此输入流读取(或跳过)的字节数。下一个调用方可能是同一个线程,也可能是另一个线程。
类 InputStream 的 available 方法总是返回 0。

此方法应该由子类重写

------解决方案--------------------
你提交的不是流,当然arg0.getInputStream()获取不到。

你写个文件上传的试试。
  相关解决方案