Dict.CN 在線詞典, 英語學(xué)習(xí), 在線翻譯

          都市淘沙者

          荔枝FM Everyone can be host

          統(tǒng)計(jì)

          留言簿(23)

          積分與排名

          優(yōu)秀學(xué)習(xí)網(wǎng)站

          友情連接

          閱讀排行榜

          評論排行榜

          HttpURLConnection常用處理方式

          /*
           * Classname       : GameSoapProcessor
           * Create Date     : 2008-5-7
           
          */

          package cn.allinpalm.sns.app.web.mxt.game;

          import java.io.File;
          import java.io.IOException;
          import java.io.OutputStream;
          import java.sql.PreparedStatement;
          import java.sql.SQLException;
          import java.util.Date;
          import java.util.HashMap;
          import java.util.Iterator;

          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;

          import org.apache.log4j.Logger;
          import org.dom4j.Document;
          import org.dom4j.DocumentException;
          import org.dom4j.Element;
          import org.dom4j.io.SAXReader;
          import org.hibernate.HibernateException;

          import cn.allinpalm.sns.app.wirelessapi.HttpSend;
          import cn.allinpalm.sns.app.web.filter.HibernateFilter;

          /**
           * 處理從游戲服務(wù)商接收到的SOAP消息
           * 
           * 
          @author   lqm
           * 
          @version  1.0
           
          */

          public class SoapMsgProcessorServlet extends HttpServlet {
              
              
          private static final long serialVersionUID = 1L;
              
          private static Logger log = Logger.getLogger(SoapMsgProcessorServlet.class);
              
              
          public SoapMsgProcessorServlet() {}

              
          public void doPost(HttpServletRequest request, HttpServletResponse response) {

                  OutputStream out 
          = null;
                  
          try {
                      request.setCharacterEncoding(
          "UTF-8");
                      Document doc 
          = null;
                      doc 
          = new SAXReader().read(request.getReader());
                      log.info(doc.asXML());
                      
                      
          /*保存從soap消息包到數(shù)據(jù)庫中*/
                      GameUser user 
          = setSoapMsgBean(doc);
                      String issaveok 
          = saveSoapMoMsg(setSoapMsgBean(doc));        
                      String restr 
          = retOptRespPkg(setSoapMsgBean(doc),issaveok);
                      
                      out 
          = response.getOutputStream();
                      out.write(restr.getBytes(
          "UTF8"));
                      out.flush();

                  }
           catch (IOException e) {
                      log.error(e, e);
                  }
           catch (Exception e) {
                      log.error(e, e);
                  }

                  
          finally{
                      
          if(out!=null){
                          
          try{
                              out.close();
                          }
          catch(IOException e){
                              log.error(e, e);
                          }

                         
                      }

                  }

              }

              
              
          public void doGet(HttpServletRequest request, HttpServletResponse response)
                      
          throws ServletException,
                          IOException 
          {
                  doPost(request, response);
              }

              
              
              
          public GameUser setSoapMsgBean(Document doc) {
                  
                 GameUser bean 
          = new GameUser();            
                 Element root 
          = doc.getRootElement();
                 
                 
          for ( Iterator iter = root.elementIterator(); iter.hasNext(); ) {
                       Element element 
          = (Element) iter.next();
                     
          if(element.getName().equals("Body")) 
                         Element MOReqelement
          =element.element("MOReq");
                         
          //遍歷MOReq結(jié)點(diǎn)的所有孩子節(jié)點(diǎn),并進(jìn)行處理
                         for ( Iterator iterInner = MOReqelement.elementIterator(); iterInner.hasNext(); ) {
                              Element elementInner 
          = (Element) iterInner.next();
                            
          //  hm.put(elementInner.getName(), elementInner.getText());
                              if("Msg_Id".equals(elementInner.getName()))
                                  bean.setMsgid(elementInner.getText());
                              }

                              
          if("Src_terminal_Id".equals(elementInner.getName()))
                                  bean.setSrcterminalid(elementInner.getText());
                              }

                              
          if("Dest_Id".equals(elementInner.getName()))
                                  bean.setDestid(elementInner.getText());
                              }

                              
          if("MsgContent".equals(elementInner.getName()))
                                  bean.setMsgcontent(elementInner.getText());
                              }

                              
          if("LinkID".equals(elementInner.getName()))
                                  bean.setLinkid(elementInner.getText());
                              }

                              
          if("CreateDate".equals(elementInner.getName()))
                                  bean.setCreatedate(elementInner.getText());
                              }

                              
          //System.out.println("elementInner.getName()="+elementInner.getName()+"---=="+elementInner.getText());
                         }

                     }

                 }
           

                  
          return bean;
              }

              
              
          /**
               * 保存是否成功 isok為1表示失敗,為0表示成功
               * 
          @param msgbean
               * 
          @return
               
          */

              
          public String  saveSoapMoMsg(GameUser msgbean){
                  
                  String isok 
          = "1";
                  PreparedStatement stmt
          =null;
                  String sql 
          = "insert into maintain.gameuserlog(id,msgseq_id,srcterm_id,dest_id,msg_content,linkid,create_date,add_date)" +
                          
          " values(maintain.GAME_USER_LOG_SEQ.Nextval,?,?,?,?,?,?,sysdate)";
                  
                  
          try {
                      stmt 
          = HibernateFilter.getSession().connection().prepareStatement(sql);
                      stmt.setString(
          1, msgbean.getMsgid() );
                      stmt.setString(
          2, msgbean.getSrcterminalid());
                      stmt.setString(
          3, msgbean.getDestid());
                      stmt.setString(
          4, msgbean.getMsgcontent());
                      stmt.setString(
          5, msgbean.getLinkid());
                      stmt.setString(
          6, msgbean.getCreatedate());
                      stmt.executeUpdate();
                      HibernateFilter.getSession().connection().commit();
                      
                      isok 
          = "0";
                  }
           catch (HibernateException e) {
                      e.printStackTrace();
                  }
           catch (SQLException e) {
                      e.printStackTrace();
                  }
          finally{
                      
          if (stmt != null)
                      
          {
                          
          try {
                              stmt.close();
                          }
           catch (SQLException e) {
                              
          // TODO Auto-generated catch block
                              e.printStackTrace();
                          }

                      }
             
                  }

                  
          return isok;        
              }

              
              
          /**
               * 操作返回響應(yīng)包
               * 
          @param userid
               * 
          @return
               
          */

              
          public static String  retOptRespPkg(GameUser user,String flag){
                  
                  StringBuffer sb 
          = new StringBuffer();
                  sb.append(
          "<?xml version = \"1.0\"  encoding=\"UTF-8\" ?>\r\n");
                  sb.append(
          "<SOAP-ENV:Envelope\r\n");
                  sb.append(
          "xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'\r\n");      
                  sb.append(
          "xmlns:xsd='http://www.w3.org/2001/XMLSchema'\r\n");  
                  sb.append(
          "xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/'\r\n");        
                  sb.append(
          "xmlns:SOAP-ENC='http://schemas.xmlsoap.org/soap/encoding/' >\r\n");                  
                  sb.append(
          "<SOAP-ENV:Header>\r\n");
                  sb.append(
          "</SOAP-ENV:Header>\r\n");       
                  sb.append(
          "<SOAP-ENV:Body>\r\n");    
                  sb.append(
          "<MOResp xmlns='http://www.infuns.com/IFXML/IFXMLSchema.xsd/'>\r\n");       
                  sb.append(
          "<Msg_Id>"+user.getMsgid()+"</Msg_Id>\r\n");
                  sb.append(
          "<LinkID>"+user.getLinkid()+"</LinkID>\r\n");
                  sb.append(
          "<hRet>"+flag+"</hRet><!-- 接收解析成功:0; 接收解析失敗:1;-->\r\n");
                  sb.append(
          "</MOResp>\r\n");      
                  sb.append(
          "</SOAP-ENV:Body>\r\n"); 
                  sb.append(
          "</SOAP-ENV:Envelope>");  
                  
                  
          return sb.toString();
              }
           
              

              
              
          /**
                * 遍歷整個(gè)XML文件,獲取所有節(jié)點(diǎn)的值與其屬性的值,并放入HashMap中
                * 
          @param filename String 待遍歷的XML文件(相對路徑或者絕對路徑)
                * 
          @param hm       HashMap 存放遍歷結(jié)果,格式:<nodename,nodevalue>或者<nodename+attrname,attrvalue>
                
          */

               
          public static void iterateWholeXML(){
                   
                HashMap
          <String,String> hm = new HashMap<String,String>();
                SAXReader saxReader 
          = new SAXReader();
                
          try {
                     Document document 
          = saxReader.read(new File("D:\\code\\trunk_lxw\\lxwSrc\\cn\\allinpalm\\sns\\app\\web\\mxt\\game\\test.xml"));
                     Element root 
          = document.getRootElement();

                     
          for ( Iterator iter = root.elementIterator(); iter.hasNext(); ) {
                           Element element 
          = (Element) iter.next();
                         
          if(element.getName().equals("Body")) 
                             Element MOReqelement
          =element.element("MOReq");
                             
          //遍歷MOReq結(jié)點(diǎn)的所有孩子節(jié)點(diǎn),并進(jìn)行處理
                             for ( Iterator iterInner = MOReqelement.elementIterator(); iterInner.hasNext(); ) {
                                  Element elementInner 
          = (Element) iterInner.next();
                                  hm.put(elementInner.getName(), elementInner.getText());
                                  System.out.println(
          "elementInner.getName()="+elementInner.getName()+"---=="+elementInner.getText());
                             }

                         }

                     }

                }
           catch (DocumentException e) {
                 
          // TODO Auto-generated catch block
                 e.printStackTrace();
                }

               }


               
              
          public static void main(String[] args) {
                  
          //iterateWholeXML();
                  StringBuffer sb = new StringBuffer();
                  sb.append(
          "<?xml version = \"1.0\"  encoding=\"UTF-8\" ?>\r\n");
                  sb.append(
          "<SOAP-ENV:Envelope\r\n");
                  sb.append(
          "xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'\r\n");      
                  sb.append(
          "xmlns:xsd='http://www.w3.org/2001/XMLSchema'\r\n");  
                  sb.append(
          "xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/'\r\n");        
                  sb.append(
          "xmlns:SOAP-ENC='http://schemas.xmlsoap.org/soap/encoding/' >\r\n");                  
                  sb.append(
          "<SOAP-ENV:Header>\r\n");
                  sb.append(
          "</SOAP-ENV:Header>\r\n");       
                  sb.append(
          "<SOAP-ENV:Body>\r\n");    
                  sb.append(
          "<MOReq xmlns='http://www.infuns.com/IFXML/IFXMLSchema.xsd/'>\r\n");       
                  sb.append(
          "<Msg_Id>2e5fb10009610029</Msg_Id>\r\n");
                  sb.append(
          "<Dest_Id>33000015</Dest_Id>\r\n");
                  sb.append(
          "<Src_terminal_Id>15810912222</Src_terminal_Id>\r\n");
                  sb.append(
          "<MsgContent>YXBY15 07M003155 IF5</MsgContent>\r\n");        
                  sb.append(
          "<LinkID>23590311470360662046</LinkID>\r\n");
                  sb.append(
          "<CreateDate>2006-08-01 00:00:00.000</CreateDate>\r\n");
                  sb.append(
          "</MOReq>\r\n");      
                  sb.append(
          "</SOAP-ENV:Body>\r\n"); 
                  sb.append(
          "</SOAP-ENV:Envelope>"); 
                     
                  log.info(HttpSend.connectURL(
          "http://localhost:6060/SoapMsgProcessorServlet",sb.toString()));

              }

              
              
          }


          public class HttpSend {
              
              
          private static Logger log = Logger.getLogger(HttpSend.class);
              
              
          public static String connectURL(String dest_url, String commString)
              
          {
                  log.debug(
          "send data to Url:"+dest_url);
                  String rec_string 
          = "";
                  URL url 
          = null;
                  OutputStream out 
          = null;
                  BufferedReader rd 
          = null;
                  HttpURLConnection urlconn 
          = null;
                  
          try
                  
          {
                      url 
          = new URL(dest_url);
                      urlconn 
          = (HttpURLConnection) url.openConnection();
                      urlconn.setReadTimeout(
          5000);
                      urlconn.setRequestProperty(
          "content-type""text/plain");
                      urlconn.setRequestMethod(
          "POST");
                      urlconn.setDoInput(
          true);
                      urlconn.setDoOutput(
          true);
                      out 
          = urlconn.getOutputStream();
                      out.write(commString.getBytes(
          "UTF8"));
                      out.flush();
                      out.close();
                      rd 
          = new BufferedReader(new InputStreamReader(
                              urlconn.getInputStream()));
                      StringBuffer sb 
          = new StringBuffer();
                      
          int ch;
                      
          while ((ch = rd.read()) > -1){
          //                System.out.println(ch);
                          sb.append((char) ch);
                      }

                      rec_string 
          = sb.toString();
                      log.info(
          "resp="+rec_string);
                      rd.close();
                      urlconn.disconnect();
                  }

                  
          catch (Exception e)
                  
          {
                      log.error(e, e);
                      
          return "";
                  }
          finally {
                      
          try {
                          
          if (out != null{
                              out.close();
                          }

                          
          if (urlconn != null{
                              urlconn.disconnect();
                          }

                          
          if (rd != null{
                              rd.close();
                          }

                      }
           catch (Exception e) {
                          log.error(e, e);
                      }

                  }


                  
          return rec_string;
              }


          }

          posted on 2008-05-09 13:25 都市淘沙者 閱讀(1194) 評論(0)  編輯  收藏 所屬分類: Java Basic/Lucene/開源資料

          主站蜘蛛池模板: 九寨沟县| 南漳县| 东海县| 华容县| 吉木乃县| 勃利县| 聊城市| 滦南县| 梅河口市| 永春县| 虎林市| 荥阳市| 淄博市| 肇东市| 松阳县| 克什克腾旗| 乌海市| 荥阳市| 松溪县| 卓资县| 南投县| 疏附县| 夏河县| 许昌市| 临汾市| 兰州市| 信宜市| 公主岭市| 永善县| 长乐市| 眉山市| 高密市| 绥阳县| 乌恰县| 嫩江县| 湘阴县| 广南县| 涪陵区| 石阡县| 类乌齐县| 罗城|