BlackBerry開發(fā)連接HTTP或Socket的五種方式
本文和大家重點學(xué)習(xí)一下BlackBerry開發(fā)連接HTTP或Socket的五種方式,在BlackBerry開發(fā)中,網(wǎng)絡(luò)相關(guān)的設(shè)置有時候比較令人困惑,下面是一篇關(guān)于網(wǎng)絡(luò)設(shè)置編程的文章,請看本文詳細介紹。
BlackBerry開發(fā)連接HTTP或Socket的五種方式
BlackBerry的API提供了五種方式來進行HTTP或者socket連接,包括:
1,BlackBerryEnterpriseServer(BES)方式
這種方式通過使用BES的BlackBerryMDSServices來進行網(wǎng)絡(luò)連接,BlackBerryMDSServices負責處理所有的瀏覽器請求或者連接請求、并負責數(shù)據(jù)加密,這是黑莓手機的默認連接方式,如下:
例1:(HttpConnection)Connector.open("http://www.testserver.com");
以上代碼會自動將BlackBerryMDSServices作為它的默認連接路徑。實際開發(fā)中,如果要確保應(yīng)用程序使用usesBlackBerryMDSServices作為它的連接路徑,需要在URL最后加上參數(shù)“deviceside=false”,這也是我們推薦的方式,如下:
例2:(HttpConnection)Connector.open(“http://www.testserver.com;deviceside=false”);
2,BlackBerryInternetServie方式
這種方式是為第三方提供的連接接口,它對數(shù)據(jù)不進行加密,用戶可以通過使用HTTPS和SSL來進行安全的連接。注:目前僅對加入了BlackBerryAllianceProgram的第三方開放合作伙伴開放,詳情參考:http://na.blackberry.com/eng/partners/alliance.jsp
3,DirectTCP方式
這種方式允許在沒有使用BlackBerryMDS的黑莓手機上直接TCP連接。為了能啟用directTCP方式,用戶需要在手機的“選項-高級選項-TCP/IP”中設(shè)置APN,以及相應(yīng)的用戶名和密碼。
注1:運行在iDEN網(wǎng)絡(luò)上的黑莓手機(包括6510、7510、7520和7100i),如果不指定deviceside參數(shù)(如例1),默認的連接是directTCP;非運行在iDEN網(wǎng)絡(luò)上的其他黑莓手機,如果不指定deviceside參數(shù),默認的連接是BlackBerryMDS。
注2:如果連接時BlackBerryMDS不存在,黑莓手機也會自動采用directTCP方式。
因此,如果要將directTCP作為黑莓手機的默認連接方式,我們建議在URL中加入“deviceside=true”參數(shù),如下:
例3:(StreamConnection)Connector.open("socket://testserver:600;deviceside=true");
4,Wi-Fi
如果需要在Wi-Fi上創(chuàng)建網(wǎng)絡(luò)連接,不需要在應(yīng)用程序中考慮特別的底層邏輯,可以在URL中加入?yún)?shù)“interface=wifi”就能實現(xiàn)Wi-Fi連接,如下:
例4:(StreamConnection)Connector.open(“socket://testserver:600;interface=wifi”);
5,WAP1.x
并不是所有的移動運營商都支持通過WAP網(wǎng)關(guān)進行連接的,所以如果要創(chuàng)建WAP連接,開發(fā)者需要和移動運營商聯(lián)系,獲取是否提供這種支持、并且獲取他們的WAP網(wǎng)管參數(shù)。
以下是一個基于WAP網(wǎng)關(guān)進行HTTP連接的例子:
例5:(HttpConnection)Connector.open("http://wap.google.com;WAPGatewayIP=127.0.0.1;WAPGatewayAPN=carrier.com.gprs");
注:其中WAPGatewayIP和WAPGatewayAPN這兩項參數(shù)必須指定,參數(shù)之間用“;”隔開,以下是所有的WAP參數(shù)列表,實際開發(fā)時請根據(jù)運營商提供的信息決定哪些參數(shù)需要設(shè)置。
6.WAP2.0
如果要連接WAP2.0的網(wǎng)關(guān),需要在連接時指定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.
- }
用戶常見的問題:
1,為什么基于WAP連接的應(yīng)用在未激活BES的手機上測試沒問題,在激活BES的手機上連接不上?
答:在連接時采用的是本文例1的連接方式。解決方案是改為采用本文例5的連接方式。
2,通過Wi-Fi如何連接到BES,BIS?可以直接連接到其他目的地址么?
答:Wi-Fi可以通過BBI連接到BES和BIS,也可以通過在Wi-Fi上配置VPN直接連接到BES。也可以繞開BBI、BES和BIS直接連接到其他server。
【編輯推薦】