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多次读取都能得到数据。求解