BlackBerry上連接HTTP或Socket的五種方式

在blackberry的開發中,網絡相關的設置有時候比較令人困惑,下面是一篇關於網絡設置編程的文章

BlackBerry上連接HTTPSocket的五種方式

 

BlackBerry API提供了五種方式來進行HTTP或者socket連接,包括:

1, BlackBerry Enterprise Server(BES)方式

這種方式通過使用BESBlackBerry MDS Services來進行網絡連接,BlackBerry MDS Services負責處理所有的瀏覽器請求或者連接請求、並負責數據加密,這是黑莓手機的默認連接方式,如下:

1: (HttpConnection) Connector.open("http://www.testserver.com");

以上代碼會自動將BlackBerry MDS Services作爲它的默認連接路徑。實際開發中,如果要確保應用程序使用uses BlackBerry MDS Services作爲它的連接路徑,需要在URL最後加上參數“deviceside=false,這也是我們推薦的方式,如下:

2: (HttpConnection)Connector.open(“http://www.testserver.com;deviceside=false”);

2, BlackBerry Internet Servie方式

這種方式是爲第三方提供的連接接口,它對數據不進行加密,用戶可以通過使用HTTPSSSL來進行安全的連接。注:目前僅對加入了BlackBerry Alliance Program第三方開放合作伙伴開放,詳情參考:http://na.blackberry.com/eng/partners/alliance.jsp

3, Direct TCP方式

這種方式允許在沒有使用BlackBerry MDS的黑莓手機上直接TCP連接。爲了能啓用direct TCP方式,用戶需要在手機的“選項-高級選項-TCP/IP”中設置APN,以及相應的用戶名和密碼。

1:運行在iDEN網絡上的黑莓手機(包括6510751075207100i),如果不指定deviceside參數(如例1),默認的連接是direct TCP;非運行在iDEN網絡上的其他黑莓手機,如果不指定deviceside參數,默認的連接是BlackBerry MDS

2:如果連接時BlackBerry MDS不存在,黑莓手機也會自動採用direct TCP方式。

因此,如果要將direct TCP作爲黑莓手機的默認連接方式,我們建議在URL中加入“deviceside=true參數,如下:

3  (StreamConnection)Connector.open("socket://testserver:600;deviceside=true");

 

4, Wi-Fi

如果需要在Wi-Fi上創建網絡連接,不需要在應用程序中考慮特別的底層邏輯,可以在URL中加入參數“interface=wifi”就能實現Wi-Fi連接,如下:

4(StreamConnection)Connector.open(“socket:// testserver:600;interface=wifi”);

5, WAP 1.x

並不是所有的移動運營商都支持通過WAP網關進行連接的,所以如果要創建WAP連接,開發者需要和移動運營商聯繫,獲取是否提供這種支持、並且獲取他們的WAP網管參數。

以下是一個基於WAP網關進行HTTP連接的例子:

 5 (HttpConnection)Connector.open("http://wap.google.com;WAPGatewayIP=127.0.0.1;WAPGatewayAPN=carrier.com.gprs");

注:其中WAPGatewayIP WAPGatewayAPN這兩項參數必須指定,參數之間用“;”隔開,以下是所有的WAP參數列表,實際開發時請根據運營商提供的信息決定哪些參數需要設置。

Parameter

Description

WapGatewayIP

IP address of the gateway.

WapGatewayAPN

APN for General Packet Radio Service (GPRS) networks only. For testing purposes, you can use rim.net.gprs

WapGatewayPort

Gateway port value. If port 9203 is specified, Wireless Transport Layer Security (WTLS) is used unless WapEnableWTLS=false is specified.

WapSourceIP

IP address of the source.

WapSourcePort

Source port value.

TunnelAuthUsername

User name for APN session, when Password Authentication Protocol (PAP) or Challenge Handshake Application Protocol (CHAP) authentication is used.

TunnelAuthPassword

Password for APN session, when PAP or CHAP authentication is used.

WapEnableWTLS

Explicitly turns on or turns off WTLS. If this parameter is not specified, WTLS is used by default for connections to port 9203.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6. WAP 2.0

如果要連接WAP2.0的網關,需要在連接時指定service record、以及UID。以下代碼說明了WAP2.0的連接時如何工作的:

5

ServiceBook sb = ServiceBook.getSB();
ServiceRecord[] records = sb.findRecordsByCid("WPTCP"); 
String uid = null; 

for(int i=0; i < records.length; i++) 
{
    //Search through all service records to find the 
    //valid non-Wi-Fi and non-MMS 
    //WAP 2.0 Gateway Service Record.
    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) 
{

    //open a WAP 2 connection
    Connector.open(_url + ";ConnectionUID=" + uid);
}
else
{

    //Consider another transport or alternative action.
}

 


用戶常見的問題:

1, 爲什麼基於WAP連接的應用在未激活BES的手機上測試沒問題,在激活BES的手機上連接不上?

答:在連接時採用的是本文例1的連接方式。解決方案是改爲採用本文例5的連接方式。

2, 通過Wi-Fi如何連接到BESBIS?可以直接連接到其他目的地址麼?

答: Wi-Fi可以通過BBI連接到BESBIS,也可以通過在Wi-Fi上配置VPN直接連接到BES。也可以繞開BBIBESBIS直接連接到其他server

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章