欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

BlackBerry上连接HTTP或Socket的五种方式

程序员文章站 2022-03-01 13:38:08
...

在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