对接成功Boss系统

发布于 2022-09-10 16:37:19 字数 9398 浏览 13 评论 0

开这次给视频会议做的营帐系统与移动的Boss对接成功,销户等操作移动需要我们提供接口给boss,原理很简单,但是还是写一篇文章贡献一下自己的经验吧。
大概是这样子的架构。
  TCPServer(我们提供)
(socket/xml调用)
《---------
  移动BOSS系统,
原理就是boss发送xml消息过来,具体是开户还是销户等等比如开户移动发来的xml格式是这样的

  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  2. <OrderMessage>
  3.     <OrderId>12345</OrderId>           // Transaction Number
  4.     <MessageBody>
  5.         <Order>
  6.             <OrderType>1</OrderType>  // Service Type
  7.             <User>                    // User Structure
  8.                 <Name>02162855709</Name>
  9.                 <Password>3eU9ed</Password>
  10.                 <Telephone>02162855709</Telephone>
  11.                 <Activated>1</Activated>
  12.                 <Email>myname@gmail.com</Email>
  13.                 <Mobile>13952409898</Mobile>
  14.             </User>
  15.         </Order>
  16.     </MessageBody>
  17. </OrderMessage>

复制代码具体我们就用socket服务器,只要用dom4j解析这些字段就好,然后调用我们系统的Service来开销户,
写一个Socket服务线程 ,这里用到阻塞io,因为系统的开销户的压力不大,线性处理还是处理的过来的。

  1.                                                                 Socket datagramSocket = new ServerSocket (port);
  2.                                        socket = datagramSocket.accept();
  3.                                         InputStream is = socket.getInputStream();
  4.                                 String resultStr = null;   
  5.                                 int readIndex = 5 * 1024 * 1024;   
  6.                                 BufferedReader bufferedReader = new BufferedReader(   
  7.                                 new InputStreamReader(is), readIndex);
  8.                                 char[] charArray = new char[readIndex];
  9.                                 int read_rst=0;
  10.                                 PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
  11.                           while ((read_rst = bufferedReader.read(charArray))!=-1) {
  12.                                   try {
  13.                                 resultStr = new String(charArray, 0, read_rst);   
  14.                                 XmlContent=resultStr;
  15.                                         XmlContent=XmlContent.trim();
  16.                 log.debug(">>>>>>>>>>>>>>>>>>>>>>>>>>>>收到boss消息:"+XmlContent);
  17.                                 SAXReader reader = new SAXReader();
  18.                                 Document doc;
  19.                                
  20.                                 doc = reader.read(new ByteArrayInputStream(XmlContent.getBytes("UTF-8")));
  21.                                 org.dom4j.Element root = doc.getRootElement();
  22.                                 log.debug(root.getText());
  23.                                 log.debug(root.getName());
  24.                                 if(root!=null)
  25.                                 {
  26.                                 Element OrderId=root.element("OrderId");
  27.                                 ordId=OrderId.getStringValue();
  28.                                 Element MessageBody=root.element("MessageBody");
  29.                                 Element Order=MessageBody.element("Order");
  30.                                 Element OrderType=Order.element("OrderType");
  31.                                
  32. //                                System.out.println(OrderType.getStringValue());
  33. //                                System.out.println("XmlContent from client : " + XmlContent);
  34.                  if(OrderType.getStringValue().trim().equals("1"))
  35.                  {
  36.                          log.debug(">>>>>>>>>>>socket 创建用户");
  37.                          Element User =Order.element("User");
  38.                          Element Name=User.element("Name");
  39.                          Element Password=User.element("Password");
  40.                          Element Telephone=User.element("Telephone");
  41.                          Element Activated=User.element("Activated");
  42.                          Element Email=User.element("Email");
  43.                          Element Mobile=User.element("Mobile");
  44. .......do 开户serveice
  45. }

复制代码很简单吧,其实两个异构系统用底层tcp自己规定解析方式是一种很简单的方法,没有必要一提到异构系统就用到SOAP,WEBSERVICE,简单有时候也可以解决很多问题。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文