使用BlackBerry開發上聯網的五種方式
本文和大家重點討論一下使用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使用詳解
- 黑莓開發中黑莓手機程序訪問網絡能走代理服務器的三種方式