本文和大家重点讨论一下使用BlackBerry开发上联网的五种方式,BlackBerryJDE的API提供了五种方式来进行HTTP或者socket连接,请看本文的详细介绍。
使用BlackBerry开发上联网的五种方式
BlackBerryJDE的API提供了五种方式来进行HTTP或者socket连接,包括:
1,BlackBerryEnterpriseServer(BES)方式
这种方式通过使用BES的BlackBerryMDSServices来进行网络连接,BlackBerryMDSServices负责处理所有的浏览器请求或者连接请求、并负责数据加密,这是黑莓手机的默认连接方式,如下:
例1:(HttpConnection)Connector.open("http://www.testserver.com");
以上代码会自动将BlackBerryMDSServices作为它的默认连接路径。实际开发中,如果要确保应用程序使用usesBlackBerryMDSServices作为它的连接路径,需要在URL最后加上参数“deviceside=false”,这也是我们推荐的方式,如下:
例2:(HttpConnection)Connector.open(“http://www.testserver.com;deviceside=false”);
2,BlackBerryInternetServie方式
这种方式是为第三方提供的连接接口,它对数据不进行加密,用户可以通过使用HTTPS和SSL来进行安全的连接。注:目前仅对加入了BlackBerryAllianceProgram的第三方开放合作伙伴开放,详情参考:http://na.blackberry.com/eng/partners/alliance.jsp
3,DirectTCP方式
这种方式允许在没有使用BlackBerryMDS的黑莓手机上直接TCP连接。为了能启用directTCP方式,用户需要在手机的“选项-高级选项-TCP/IP”中设置APN,以及相应的用户名和密码。
注1:运行在iDEN网络上的黑莓手机(包括6510、7510、7520和7100i),如果不指定deviceside参数(如例1),默认的连接是directTCP;非运行在iDEN网络上的其他黑莓手机,如果不指定deviceside参数,默认的连接是BlackBerryMDS。
注2:如果连接时BlackBerryMDS不存在,黑莓手机也会自动采用directTCP方式。
因此,如果要将directTCP作为黑莓手机的默认连接方式,我们建议在URL中加入“deviceside=true”参数,如下:
例3-1:(SocketConnection)Connector.open("socket://testserver:600;deviceside=true");
此外,如果应用程序不希使用用户自己设置的APN,也可以在URL中指定自己APN,以下是指定通过中国移动CMNET进行直接TCP连接的例子:
例3-2:(SocketConnection)Connector.open("socket://testserver:600;deviceside=true;APN=cmnet");
4,Wi-Fi方式
如果需要在Wi-Fi上创建网络连接,不需要在应用程序中考虑特别的底层逻辑,可以在URL中加入参数“interface=wifi”就能实现Wi-Fi连接,如下:
例4:(StreamConnection)Connector.open(“socket://testserver:600;interface=wifi”);
5,WAP方式
5-1,WAP1.x
并不是所有的移动运营商都支持通过WAP网关进行连接的,所以如果要创建WAP连接,开发者需要和移动运营商联系,获取是否提供这种支持、并且获取他们的WAP网管参数。
以下是一个基于中国移动CMWAP的WAP网关进行HTTP连接的例子:
例5:(HttpConnection)Connector.open("http://wap.google.com;WAPGatewayIP=10.0.0.172;WAPGatewayAPN=cmwap");
注:其中WAPGatewayIP和WAPGatewayAPN这两项参数必须指定,参数之间用“;”隔开,以下是所有的WAP参数列表,实际开发时请根据运营商提供的信息决定哪些参数需要设置。
5-2WAP2.0
如果要连接WAP2.0的网关,需要在连接时指定servicerecord、以及UID。以下代码说明了WAP2.0的连接时如何工作的:
例5:
- ServiceBookServiceBooksb=ServiceBook.getSB();
- ServiceRecord[]records=sb.findRecordsByCid("WPTCP");
- Stringuid=null;
- for(inti=0;i<records.length;i++)
- {
- //Searchthroughallservicerecordstofindthe
- //validnon-Wi-Fiandnon-MMS
- //WAP2.0GatewayServiceRecord.
- if(records[i].isValid()&&!records[i].isDisabled())
- {
- if(records[i].getUid()!=null&&records[i].getUid().length()!=0)
- {
- if((records[i].getUid().toLowerCase().indexOf("wifi")==-1)&&
- (records[i].getUid().toLowerCase().indexOf("mms")==-1))
- {
- uid=records[i].getUid();
- break;
- }
- }
- }
- }
- if(uid!=null)
- {
- //openaWAP2connection
- Connector.open(_url+";ConnectionUID="+uid);
- }
- else
- {
- //Consideranothertransportoralternativeaction.
- }
在这里,基本流程是先从ServiceBook中获得ServiceRecord,然后再从需要注意的是
【编辑推荐】
- Blackberry开发平台的永久存储-PersistentStore
- 九步实现BlackBerry开发程序发布应用到app world
- BlackBerry开发中七步实现创建app world账号
- BlackBerry开发环境中javaloader使用详解
- 黑莓开发中黑莓手机程序访问网络能走代理服务器的三种方式