在没有BES的情况下运行Blackberry App的问题

时间:2009-10-23 12:47:29

标签: networking blackberry jde

我正在开发一个使用HttpConnections和InputStreams进行相当多网络连接的Blackberry应用程序。我一直在可以访问BES的环境中进行测试,但是只使用无线进行演示。

对Bold 9000的一些初步测试表明,尽管手机的网络浏览器可以上网,但我的应用却无法上网。我对它的理解是,BES通常处理大部分网络逻辑,并且黑莓本身并不擅长它。

我已经看到一些引用必须在我尝试连接的网址上添加“; interface = wifi”,但是当我这样做时,逐步下载大型电影文件将在几秒后挂起。

还有什么方法可以让Blackberry应用程序只使用无线技术吗?是否有我可以使用的签名类可以处理这个?

修改

看起来正在发生的事情是网络很难有机会不工作 - 一般套接字例外。问题是,对于大型文件,我正在以256k的块进行许多连接,因此对于大型文件,最终会出现错误的问题。我真的不确定如何处理这个问题。

修改

我已经使用了我的Connector.open方法,使用了具有超时选项的.open版本。如果特定的网络呼叫没有返回,这是我的问题,除了例外,它会在几秒后重试。它也用于例外。这充其量只是一个临时修复,如果有人知道改善非BES网络性能的方法,我很乐意听到它。

1 个答案:

答案 0 :(得分:2)

一个简单的解决方案是检查WiFi覆盖状态

public boolean GetWiFiCoverageStatus()  {
    if((WLANInfo.getWLANState() == WLANInfo.WLAN_STATE_CONNECTED) &&
              RadioInfo.areWAFsSupported(RadioInfo.WAF_WLAN)) {
              // this.connectionString += ";interface=wifi";
              return true;
    } else return false;           
}

这将确保仅在设备连接到接入点时才建立连接。

编辑:

您应该检查的

第二个事项是此知识库条目(HTTP 413 Request Entity Too Large)

第三次补充:您是否在连接字符串中使用; deviceside = true?如果没有MDS后端,则必须使用本附录来确保正常的TCP / IP连接