在BB开发过程中,可以通过Connector创建各种连接(http,htts,ssl/tls,socket,comm,btspp,udp,sms,mms),其中包括常用的上网的(http,htts,ssl/tls,socket), 在这过程中,可能需要使用RadioInfo ; WLANInfo ; ServiceBook ; ConnectionInfo 这几个对象进行一些有关信号可用性的判断,并根据不同的网络构造url[url+parameters],这个过程可能相对麻烦。
比如:
http://test.com;n t e rf a c e=w if i //使用wifi
http://test.com ;deviceside=false //使用MDS
http://wap.test.com ;WAPGatewayIP=10.0.0.127;WAPGatewayAPN=cmnet;WapSourcePort //使用wap1
SDK5.0中提供的 Enhanced Network API,简化了这个过程,能够自动检测可用网络
比如:
先将可能需要的网络参数设置给ConnectionFactory
TcpCellularOptions tcpOptions = new TcpCellularOptions();
tcpOptions.setApn(_tcpApn);
tcpOptions.setTunnelAuthUsername(_tcpApnUser);
tcpOptions.setTunnelAuthPassword(_tcpApnPassword);
setTransportTypeOptions(TransportInfo.TRANSPORT_TCP_CELLULAR, TcpOptions);
WapOptions wapOptions = new WapOptions();
wapOptions.setWapGatewayApn(_wapGatewayApn);
wapOptions.setWapGatewayIp(_wapGatewayIp);
wapOptions.setWapSourceIp(_wapSourceIp);
wapOptions.setTunnelAuthUsername(_wapUser);
wapOptions.setTunnelAuthPassword(_wapPassword);
....
setTransportTypeOptions(TransportInfo.TRANSPORT_WAP, WapOptions);
BisBOptions bisBOptions = new BisBOptions();
setTransportTypeOptions(TransportInfo.TRANSPORT_BIS_B, bisBOptions);
后面工作交给ConnectionFactory就行了
connectionFactory.getConnection("http://test.com")
connectionFactory.getConnection("http://test.com",TransportInfo.TRANSPORT_ WAP2 , null );
具体使用方法,可以参考以下两篇文章:
http://blog.csdn.net/BBturials/archive/2010/09/14/5883853.aspx
这里说明一下AttemptsLimit参数
ConnectionFactory使用setAttemptsLimit方法可以定义重试次数,也就是自动检测失败后,可以重新检测次数。
connectionFactory.getConnection(url)的过程,会按照默认或指定的顺序检测[调用setPreferredTransportTypes方法设定检测次序]可用的连接,每个TransportType检测一次,如果失败就对下面一个进行检测,以此类推直至结束。如果所有全部失败,则回头重新按照顺序检测,这里的"回头"次数,就是AttemptsLimit