本发明涉及Android移动终端的信息交互领域,具体涉及一种Android移动终端的网络交互方法及系统。
背景技术:
在Android移动终端进行开发时,通常会遇到2个以上的移动终端在应用中进行交互的场景,目前多个移动终端交互传递消息时,消息的接收和推送一般通过交互服务器进行中转,交互服务器进行中转不仅增大了交互信息的复杂程度,而且耗费了交互服务器较多的网络资源,增加了运行成本。
技术实现要素:
针对现有技术中存在的缺陷,本发明解决的技术问题为:在不需要通过交互服务器转发交互信息的情形下,实现多个移动终端的网络交互,本发明不仅显著降低了交互信息的复杂程度,而且在交互服务器上注册移动终端所耗费的网络资源较少,降低了运行成本。
为达到以上目的,本发明提供的Android移动终端的网络交互方法,包括以下步骤:
步骤A:移动终端根据交互服务器的真实地址,向交互服务器发起基于SIP的注册请求,注册请求中的注册数据包括移动终端本地储存的IMEI编码和移动终端IP,转到步骤B;
步骤B:所述注册数据不存在于交互服务器中时,交互服务器根据注册数据生成唯一ID字符串,并将唯一ID字符串进行加密;交互服务器将注册数据和唯一ID字符串保存形成注册请求数据;交互服务器将唯一ID字符串返回至移动终端,转到步骤C;
步骤C:当前移动终端A需要向移动终端B进行交互时,移动终端A获取移动终端B的唯一ID字符串后,向交互服务器发送带有移动终端B的唯一ID字符串的交互请求,转到步骤D;
步骤D:交互服务器根据交互请求中的唯一ID字符串对应的移动终端IP,向移动终端B发送基于SIP的响应信息,响应信息中包括移动终端A的唯一ID字符串;交互服务器收到移动终端B响应的同意交互信息后,将移动终端B的IP返回至移动终端A,转到步骤E;
步骤E:移动终端A根据移动终端B的IP,向移动终端B发送传输信息加密方式;移动终端A收到移动终端B响应的加密方式确认成功信息后,将传输信息通过所述加密方式加密后发送至移动终端B,移动终端B通过所述加密方式对应的解密方式对传输信息进行解密。
与现有技术相比,本发明的优点在于:
参见步骤A和步骤B可知,本发明的交互服务器只用于注册移动终端,通过注册的唯一ID字符串,能够促使需要交互的移动终端跳过交互服务器自行传输信息,因此与现有技术中通过交互服务器转发交互消息相比,本发明不仅显著降低了交互信息的复杂程度,而且在交互服务器上注册移动终端所耗费的网络资源较少,降低了运行成本。
与此同时,参见步骤B可知,本发明的交互服务器生成唯一ID字符串时,会通过加密方式加密;参见步骤E可知,移动终端进行交互时,会通过自行设置的加密方式传输信息进行加密,加密方式只有交互双方知悉,进一步增强了网络传输的安全。
进一步,本发明根据镜像地址请求交互服务器的真实地址,进而保证开发者的交互服务器可随时变动或者更换,灵活性较强。
附图说明
图1为本发明实施例中Android移动终端的网络交互方法的流程图。
具体实施方式
以下结合附图及实施例对本发明作进一步详细说明。
参见图1所示,本发明实施例中的Android移动终端的网络交互方法,包括以下步骤:
S1:移动终端根据交互服务器的真实地址,向交互服务器发起基于SIP(Session Initiation Protocol,会话初始协议)的注册请求,注册请求中的注册数据包括移动终端本地储存的IMEI(International Mobile Equipment Identity,国际移动设备标识)编码和移动终端IP,转到S2。
S1中交互服务器的真实地址的获取方法为:根据预先设置于移动终端中的镜像地址,使用Android中的HttpGet向交互服务器发起真实地址请求,具体流程为:
HttpGet httpGet=new HttpGet(url);
//url为镜像地址;
HttpClient httpClient=new DefaultHttpClient();
//发送请求
HttpResponse response=httpClient.execute(httpGet);
//显示响应
showResponseResult(response);
//一个私有方法,将交互服务器的响应结果显示出来;
根据交互服务器的响应结果获取真实地址,具体流程为:
HttpEntity httpEntity=response.getEntity();
InputStream inputStream=httpEntity.getContent();
BufferedReader reader=
new BufferedReader(new InputStreamReader(inputStream));
String result="";
String line="";
while(null!=(line=reader.readLine()))
{result+=line;}
使用上述代码,会得到一个result的返回数据,该数据交互服务器的真实地址。
S1中IMEI编码的获取方式为:
android.os.SystemProperties.get(android.telephony.TelephonyProper ties.PROPERTY_IMEI)。
S1中向交互服务器发起sip注册请求的方法为:
调用sipservice.class,实例化sipservice.class中的SipManager(sip管理器),具体流程为:mSipManager=SipManager.newInstance(this)。
通过SipManager初始化sip协议栈(即使用voip中的本地配置文件SipProfile来执行注册服务)后,通过真实地址和IMEI编码向交互服务器发起sip注册请求,具体流程为:
SipProfile.Builder builder=
new SipProfile.Builder(username,domain);
上述UserName为IME编码,domain为真实地址。
S2:交互服务器判断注册请求中的注册数据是否已经存在,若是,则证明当前移动终端已注册,转到S4,否则证明当前移动终端未注册,转到S3。
S3:交互服务器根据注册数据生成唯一ID字符串,并将唯一ID字符串通过MD5(Message Digest Algorithm MD5,消息摘要算法第五版)加密算法加密(唯一ID就是移动终端交互时识别交互对方的标识);交互服务器将注册数据和唯一ID字符串保存形成注册请求数据、并标记保存时间;交互服务器将注册成功信息(例如回复状态为200,若注册失败,则等待移动终端再次发起注册)和唯一ID字符串返回至移动终端,转到S5。
此外,由于注册请求基于SIP,即注册请求是1个临时会话(即会话时间小于指定时间,本实施例中为3小时),因此交互服务器在启动时(即进行S2时),会自动启动轮询服务,根据保存时间判断对应的已经保存的注册请求数据是否已过期(即保存时间距离交互服务器当前时间是否大于3小时),若是,则删除注册请求数据,否则继续保存注册请求数据。
S4:交互服务器将注册数据对应的注册请求数据的保存时间,更新为当前时间后,向移动终端返回已注册信息、以及注册数据对应的唯一ID字符串,转到S5。
S5:当前移动终端A需要向其他移动终端B进行交互时,移动终端A获取移动终端B的唯一ID字符串后(获取方式包括短信、邮件等多种),通过makeCall方法,向交互服务器发送带有移动终端B的唯一ID字符串的交互请求,转到S6。
S5中交互请求的发送方式为:
SipManager.makeCall(mSipProfile.getUriString(),md5,listener,30);
其中SipProfile为移动终端A的本地配置文件,UriString()为交互服务器信息,md5为移动终端B的唯一ID字符串,listener为监听器。
S6:交互服务器根据交互请求中的唯一ID字符串对应的移动终端IP(若唯一ID字符串不存在,则直接向移动终端A返回交互请求失败信息),向移动终端B发送基于SIP的响应信息,响应信息中包括移动终端A的唯一ID字符串。交互服务器收到移动终端B的响应后(即返回同意交互信息,例如状态码200;移动终端B若已注册,则监听器收到响应信息后会弹出对话框,以供移动终端B的用户选择同意或者拒绝交互),将移动终端B的IP返回至移动终端A,转到S7。
S6中若交互服务器收到移动终端B返回的拒绝交互信息(例如状态401)时,向移动终端A返回交互请求失败信息)。
S7:移动终端A使用sipcall(聊天通讯类软件,运行环境支持Android1.5),根据移动终端B的IP向移动终端B发送传输信息加密方式。若移动终端B同意使用移动终端A发送的加密方式对传输信息进行加密和解密,则向移动终端A响应加密方式确认成功信息;移动终端A将传输信息通过上述加密方式加密后,发送给移动终端B,移动终端B通过上述加密方式对应的解密方式对传输信息进行解密。
S7中加密方式为Base64(8Bit字节代码的编码方式)或自定义的字符串。
S7中移动终端A向移动终端B发送传输信息加密方式后,若移动终端B不同意使用移动终端A发送的加密方式对传输信息进行加密和解密,则向移动终端A响应加密方式确认失败信息,重新执行S7。
本发明实施例中的Android移动终端的网络交互系统,包括:设置于移动终端上的服务器地址请求模块、交互请求模块和交互信息传输模块;该系统还包括设置于交互服务器上的交互秘钥生成模块和交互响应模块。
服务器地址请求模块用于:根据预先设置的交互服务器的镜像地址,获取交互服务器的真实地址;根据交互服务器的真实地址,向交互秘钥生成模块发起基于SIP的注册请求,注册请求中的注册数据包括移动终端本地储存的IMEI编码和移动终端IP。
交互秘钥生成模块用于:收到注册请求后:
若注册数据不存在于交互服务器中时,根据注册数据生成唯一ID字符串,并将唯一ID字符串进行加密(加密方式为MD5);将注册数据和唯一ID字符串保存形成注册请求数据(并标记保存时间);将唯一ID字符串返回至交互请求模块;
若所述注册数据已保存于交互服务器中时,将注册数据对应的注册请求数据的保存时间,更新为当前时间后,向交互请求模块返回所述注册数据对应的唯一ID字符串。
交互秘钥生成模块工作时,还会根据保存时间判断对应的注册请求数据是否已过期,若是,则删除注册请求数据,否则继续保存注册请求数据。
两个移动终端进行交互时,定义主动交互的移动终端的交互请求模块和交互响应模块为A,被动交互的移动终端的交互请求模块和交互响应模块为B。
交互请求模块A用于:获取移动终端B的唯一ID字符串后,向交互响应模块B发送带有移动终端B的唯一ID字符串的交互请求。
交互请求模块B用于:收到交互响应模块发送的响应信息后,向交互响应模块返回同意交互信息或者拒绝交互信息。
交互响应模块用于:收到交互请求模块A发送的交互请求后,根据交互请求中的唯一ID字符串对应的移动终端B的IP,向交互请求模块B发送基于SIP的响应信息,响应信息中包括交互请求模块A所属移动终端的唯一ID字符串;收到交互请求模块B响应的同意交互信息后,将移动终端B的IP返回至交互信息传输模块A;收到交互请求模块B响应的拒绝交互信息后,向交互请求模块A返回交互请求失败信息。
交互信息传输模块A用于:根据移动终端B的IP,向交互信息传输模块B发送传输信息加密方式(加密方式为Base64或自定义的字符串);收到交互信息传输模块B响应的加密方式确认成功信息后,将传输信息通过所述加密方式加密后发送至交互信息传输模块B;收到交互信息传输模块B响应的加密方式确认失败信息后,重新开始工作。
交互信息传输模块B用于:收到传输信息加密方式,向交互信息传输模块A返回加密方式确认成功信息或加密方式确认失败信息;收到加密的传输信息后,通过所述加密方式对应的解密方式对传输信息进行解密。
进一步,本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。