Проблема cxml PunchoutSetupRequest в Struts2… при получении запроса
Вопрос
я использую сервлет для получения rquest в Struts2 для модуля cxml punchout, xml-документ будет отправлен с запросом в потоке, и я использовал request.getInputStream()
и request.getReader()
для получения, но когда запрос попадает на мой сервлет из удаленной клиентской системы inputSteram.read()
возвращает значение -1 , но req.getContentLength()
возвращает длину xml-строки из объекта запроса....
Как я могу избавиться от этой проблемы ...?есть ли какой-нибудь другой способ осуществить этот процесс ..?
примечание: тот же самый сервлет работает в non-распорки среды.......!
Решение
Решаемая :Если вы используете InputStream в srvlet для чтения потока значений, предполагается, что вы не должны использовать Request.getParameter()....перед получением значения потока в 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());