日期:2014-05-18  浏览次数:20949 次

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最方便。