蹭蹭一笑 2016-06-21 09:35 采纳率: 0%
浏览 2032

request读取流的问题,大家一起讨论下

1 项目中碰到个问题,在过滤器中通过request.getParameterNames读取数据进行过滤后,发现在后续的servlet中通过getInputStream读取的时候读不到数据,百度后说是这两个方法有冲突,因为流只能够读取一遍,但是后来发现个问题,我将模拟客户端的代码修改下:
原来
//url="";
conn = (HttpURLConnection) objUrl.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
conn.setRequestMethod("POST");
conn.setRequestProperty("Accept-Charset", "utf-8");

conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
String xmlStr = "SSSSSSSS";
conn.setRequestProperty("Content-Length", String.valueOf(xmlStr.length()));
//conn.connect();

        DataOutputStream out2 = new DataOutputStream(conn
                .getOutputStream());
        //out = conn.getOutputStream();
        //out.write(xmlStr.getBytes());
        out2.writeBytes(xmlStr);
        System.out.println("开始POST请求");
        out2.flush();
        System.out.println("结束POST请求");
        out2.close();

新的:
//url="";
HttpClient httpClient = new HttpClient ();
PostMethod httpost = new PostMethod(url);
//设置参数

try{
System.out.println(param2());
RequestEntity entity = new StringRequestEntity("SDSDSDSD", "text/xml", "utf-8");
httpost.setRequestEntity(entity);

httpClient.executeMethod(httpost);
String result = httpost.getResponseBodyAsString();
System.out.println("结果"+result);
}catch(Exception e){
e.printStackTrace();
}

发现新改了客户端请求后,代码能正常执行,不会出现上面说的过滤器读取后,servlet读取到空,然后我在servlet中使用getInputStream多次读取都能得到数据。求解

  • 写回答

1条回答 默认 最新

  • devmiao 2016-06-21 15:23
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题