Я пытаюсь прочитать потоковый запрос, отправленный с другого сервлета в Struts2 - PullRequest
0 голосов
/ 17 марта 2011

Я пытаюсь написать сервлет, который будет отправлять файл XML (строку в формате xml) другому сервлету через POST в STRUTS2.

сервлет, который будет отправлять файл XML:

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-файл:

 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 ....!

Приведенный выше код работал нормально при проверке в среде без структур .....?

1 Ответ

2 голосов
/ 18 марта 2011

решено: Если вы используете inputStream в srvlet для чтения потока значений, вы не должны использовать Request.getParameter() .... до получения значения Stream для InputStream через req.getInputStream() ...

Пример:

Правильно - метод

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