Servlets 我正在尝试读取Struts2中另一个Servlet发送的流请求
我正在尝试编写一个servlet,它将通过STRUTS2中的POST向另一个servlet发送一个XML文件(XML格式的字符串) 将发送XML文件的servlet:Servlets 我正在尝试读取Struts2中另一个Servlet发送的流请求,servlets,struts2,request,Servlets,Struts2,Request,我正在尝试编写一个servlet,它将通过STRUTS2中的POST向另一个servlet发送一个XML文件(XML格式的字符串) 将发送XML文件的servlet: String requestStr = "...........xml text........"; URLConnection con = new uRL("http://192.168.1.74/Project1/Request").openConnection(); con.setDoOutput(true); Ou
String requestStr = "...........xml text........";
URLConnection con = new uRL("http://192.168.1.74/Project1/Request").openConnection();
con.setDoOutput(true);
OutputStream xmlResp = con.getOutputStream();
xmlResp.write(requestStr.getBytes("UTF-8"));
xmlResp.flush();
xmlResp.close();
将接收XML文件的servlet:
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());
int iCont=req.getContentLength();
return xmlStr.toString();
在上述情况下,InputStream:in.read返回-1,但int-iCont=req.getContentLength();iCont返回值1335
当在非struts环境中检查时,上面的代码运行良好 已解决:
若您在srvlet中使用inputStream来读取值流,那个么您不应该使用Request.getParameter()
。。。。在通过req.getInputStream()
将流值获取到InputStream之前
例:
正确——方法
以下方法将导致问题:
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());
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());