我正在尝试读取从 Struts2 中的另一个 Servlet 发送的流请求

发布于 2024-10-22 04:40:14 字数 911 浏览 2 评论 0原文

我正在尝试编写一个 servlet,它将通过 STRUTS2 中的 POST 将 XML 文件(xml 格式的字符串)发送到另一个 servlet。

将发送 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 环境中检查时工作正常......?

I am trying to write a servlet that will send a XML file (xml formatted string) to another servlet via a POST in STRUTS2.

servlet that will send a XML file:

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();

servlet that will recive a XML file :

 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();

in above case InputStream : in.read returns -1 but int iCont = req.getContentLength(); iCont returns value 1335....!

Above code worked fine when checked in non-struts Environment.....?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

素年丶 2024-10-29 04:40:14

已解决:
如果您在 srvlet 中使用 inputStream 来读取值流,则在通过 req.getInputStream()< 将 Stream 值获取到 InputStream 之前,您不应该使用 Request.getParameter().... /code>...

例如:

正确--方法

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());

Solved :
If you are using inputStream in srvlet to read value stream, you are not suppose to use Request.getParameter().... before getting Stream value to InputStream through req.getInputStream()...

Ex:

Correct-- method

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());

Below method will cause 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());
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文