我正在使用servlet在Struts2中为cxml打孔模块重新获取rquest,xml文档将在流中发送请求,我使用request.getInputStream()
和request.getReader()
来回复但是当请求到达我的时候来自远程客户机系统inputSteram.read()
的servlet返回-1,但req.getContentLength()
返回来自请求对象的xml字符串的长度....
我怎样才能克服这个问题......?有没有其他方法来执行这个过程..?
注意: 同一个servlet在非struts环境中工作.......!
答案 0 :(得分:1)
解决:如果你在srvlet中使用inputStream来读取值流,那么在通过req.getInputStream()获取Stream值到InputStream之前,你不应该使用Request.getParameter()....
例如:
正确 - 方法
InputStream in=req.getInputStream();
StringBuffer xmlStr=new StringBuffer();
int d;
while((d=in.read()) != -1){
xmlStr.append((char)d);
}
System.out.println("xmlStr1--"+xmlStr.toString());
以下方法将导致ISSUE:
String str = req.getParameter("SOMETEXT");
InputStream in=req.getInputStream();
StringBuffer xmlStr=new StringBuffer();
int d;
while((d=in.read()) != -1){
xmlStr.append((char)d);
}
System.out.println("xmlStr1--"+xmlStr.toString());