论坛首页 综合技术论坛

对接成功Boss系统

浏览 6105 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-01-28  

    开这次给视频会议做的营帐系统与移动的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,简单有时候也可以解决很多问题。

 

   发表时间:2010-07-08  
kakaluyi 写道

    开这次给视频会议做的营帐系统与移动的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,简单有时候也可以解决很多问题。

 


用SOAP,WEBSERVICE,是中国移动增值业务系统的大势所趋,当你接触到中国移动VGOP系统的互通网关就知道原因了
0 请登录后投票
   发表时间:2010-07-08  
哥们你说的很对,联通的营帐就是用soap,webservice做的
0 请登录后投票
   发表时间:2010-09-14  
用webservice的确是好东西,最起码我接触的电信很多东西,不管是门户还是底层接口都有很多是通过这个开放的
0 请登录后投票
   发表时间:2011-01-11  
华为 也是搞这么一套
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics