对接成功Boss系统
开这次给视频会议做的营帐系统与移动的Boss对接成功,销户等操作移动需要我们提供接口给boss,原理很简单,但是还是写一篇文章贡献一下自己的经验吧。
大概是这样子的架构。
TCPServer(我们提供)
(socket/xml调用)
《---------
移动BOSS系统,
原理就是boss发送xml消息过来,具体是开户还是销户等等比如开户移动发来的xml格式是这样的
- <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
- <OrderMessage>
- <OrderId>12345</OrderId> // Transaction Number
- <MessageBody>
- <Order>
- <OrderType>1</OrderType> // Service Type
- <User> // User Structure
- <Name>02162855709</Name>
- <Password>3eU9ed</Password>
- <Telephone>02162855709</Telephone>
- <Activated>1</Activated>
- <Email>myname@gmail.com</Email>
- <Mobile>13952409898</Mobile>
- </User>
- </Order>
- </MessageBody>
- </OrderMessage>
复制代码具体我们就用socket服务器,只要用dom4j解析这些字段就好,然后调用我们系统的Service来开销户,
写一个Socket服务线程 ,这里用到阻塞io,因为系统的开销户的压力不大,线性处理还是处理的过来的。
- Socket datagramSocket = new ServerSocket (port);
- socket = datagramSocket.accept();
- InputStream is = socket.getInputStream();
- String resultStr = null;
- int readIndex = 5 * 1024 * 1024;
- BufferedReader bufferedReader = new BufferedReader(
- new InputStreamReader(is), readIndex);
- char[] charArray = new char[readIndex];
- int read_rst=0;
- PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
- while ((read_rst = bufferedReader.read(charArray))!=-1) {
- try {
- resultStr = new String(charArray, 0, read_rst);
- XmlContent=resultStr;
- XmlContent=XmlContent.trim();
- log.debug(">>>>>>>>>>>>>>>>>>>>>>>>>>>>收到boss消息:"+XmlContent);
- SAXReader reader = new SAXReader();
- Document doc;
- doc = reader.read(new ByteArrayInputStream(XmlContent.getBytes("UTF-8")));
- org.dom4j.Element root = doc.getRootElement();
- log.debug(root.getText());
- log.debug(root.getName());
- if(root!=null)
- {
- Element OrderId=root.element("OrderId");
- ordId=OrderId.getStringValue();
- Element MessageBody=root.element("MessageBody");
- Element Order=MessageBody.element("Order");
- Element OrderType=Order.element("OrderType");
- // System.out.println(OrderType.getStringValue());
- // System.out.println("XmlContent from client : " + XmlContent);
- if(OrderType.getStringValue().trim().equals("1"))
- {
- log.debug(">>>>>>>>>>>socket 创建用户");
- Element User =Order.element("User");
- Element Name=User.element("Name");
- Element Password=User.element("Password");
- Element Telephone=User.element("Telephone");
- Element Activated=User.element("Activated");
- Element Email=User.element("Email");
- Element Mobile=User.element("Mobile");
- .......do 开户serveice
- }
复制代码很简单吧,其实两个异构系统用底层tcp自己规定解析方式是一种很简单的方法,没有必要一提到异构系统就用到SOAP,WEBSERVICE,简单有时候也可以解决很多问题。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论