蹭蹭一笑 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 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题