2011-09-19 60 views
1

我使用下列方式HTTP连接:HTTP连接参数

  HttpConnection _httpConnection = null; 

     try { 
      _httpConnection = (HttpConnection)Connector.open(_url); 
     } catch(Exception e) { } 

     byte [] postDataBytes = _postData.getBytes(); 
     _httpConnection.setRequestMethod(HttpConnection.POST); 
     _httpConnection.setRequestProperty("User-Agent","Profile/MIDP-2.0 Configuration/CLDC-1.0"); 
     _httpConnection.setRequestProperty("Content-Language", "en-US"); 
     _httpConnection.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); 
     _httpConnection.setRequestProperty("Connection", "close"); 
     _httpConnection.setRequestProperty("Content-Length", Integer.toString(_postData.getBytes().length)); 

     os = _httpConnection.openOutputStream(); 
     os.write(postDataBytes); 
     os.flush(); 

此HTTP连接需要的参数,以成功地打开。例如,在WIFI网络上,它需要将“; deviceside = true; interface = wifi”添加到URL中。

问题在于EDGE连接。每个国家都需要添加不同的参数。例如在黎巴嫩,它需要“; deviceside = false”,但在KSA中,如果我添加此参数,连接将无法打开。在美国它需要不同类型的参数。问题是如何为具有相同参数的所有国家建立HTTP连接。这样应用程序无论在哪里下载,都能成功地连接到互联网。

任何人都可以帮助解决这个问题吗?在此先感谢

+0

你与交通混乱的链路层?例如,您可以通过EDGE或CDMA甚至WiFi获得BES连接('deviceside = false')。但是,如果设备与BES环境关联,则只能获得BES连接。例如,大多数消费者设备不与BES相关联,而是与BIS相关联。 –

回答

4

欢迎来到黑莓网络传输混乱的世界!您需要从文章Connecting your BlackBerry - http and socket connections to the world开始。

这里是“只要给我一个连接”一个简单的例子(注意,你将需要添加相应的错误处理;同时,myURL在下面的代码应该有附加到它没有连接描述信息):

ConnectionFactory factory = new ConnectionFactory(); 
ConnectionDescriptor descriptor = factory.getConnection(myURL); 
if (descriptor != null) { 
    _httpConnection = (HttpConnection) descriptor.getConnection(); 
    ... 
} 
+0

我花了几天的时间阅读这篇文章,没有得出任何一般性结论......您是否发现过任何可能使这篇文章对我有用的东西? –

+0

您定位的操作系统版本是什么?我发现OS5 +('ConnectionFactory'等)中的网络API非常容易使用,而且更加灵活。 –

+0

我的目标是OS 5.0及以上版本。我看到了ConnectionFactory API,但不知道如何使用它!我尝试了不同的例子,但未能成功。你能给我一些帮助吗? –

0

尝试使用用在这个环节melick-rajee.blogspot.com下文称方法和使用它像

_url = "http://www.example.com"; 

_httpConnection = (HttpConnection)Connector.open(_url + getConnectionString()); 

你将不得不签署申请使用此否则应用程序将显示异常。 要签署你的应用程序,只需到这里Code Signing Keys

+0

无法通过EDGE进行连接!同样的问题 –

0

要使用connectionFactory,似乎您需要设置BisBOptions

试试这个:

connFact = new ConnectionFactory(); 
    connFact.setTransportTypeOptions(TransportInfo.TRANSPORT_BIS_B, 
        new BisBOptions("mds-public"));