Servlets 我正在尝试读取Struts2中另一个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

我正在尝试编写一个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);
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());