servlet接收xml数据流的问题
搭建一个Struts的java服务器,
客户端通过C++提交的XML数据流,
现在不太清楚怎么在Struts里面接收XML流,并解析?
注:
网上查了半天找到下面的类子,但是又不明白在那里调用?
望牛人指点一下,不胜感激
//获取post数据
public String getDoc(HttpServletRequest request) throws Exception {
char[] readerBuffer = new char[request.getContentLength()];
BufferedReader bufferedReader = request.getReader();
logger.info("开始处理上传数据");
int portion = bufferedReader.read(readerBuffer);
int amount = portion;
while (amount < readerBuffer.length) {
portion = bufferedReader.read(readerBuffer, amount,
readerBuffer.length - amount);
amount = amount + portion;
}
StringBuffer stringBuffer = new StringBuffer(
(int) (readerBuffer.length * 1.5));
for (int index = 0; index < readerBuffer.length; index++) {
char c = readerBuffer[index];
stringBuffer.append(c);
}
String xml = stringBuffer.toString();
logger.info(xml);
return xml;
}
------解决方案--------------------web service
------解决方案--------------------http-xml并不总是webservice,webservice是http-xml的指定schema约束!
如果只是普通的xml,通过dom4j等直接解析response.getInputStream()就可以了;
如果是webservice可以通过axis,cxf之类的直接架设webservice服务,然后发布wsdl给C++程序员!
------解决方案--------------------如果只是为了提交一个xml配置文件,那你直接通过servlet的response.getInputStream()流中读取实体,保存到文件就好了
------解决方案--------------------哪需要什么web service啊。
就是用普通的http请求,将xml字符串post过来,struts处理请求里的字符串就行了。
将问题分成2个小点:
(1)struts能接受到http请求里的字符串(不关心内容是什么,服务端能打印出来即可);
(2)这个字符串是xml格式,需要解析。
------解决方案--------------------使用socket最方便。