我正在开发一个使用HttpConnections和InputStreams进行相当多网络连接的Blackberry应用程序。我一直在可以访问BES的环境中进行测试,但是只使用无线进行演示。
对Bold 9000的一些初步测试表明,尽管手机的网络浏览器可以上网,但我的应用却无法上网。我对它的理解是,BES通常处理大部分网络逻辑,并且黑莓本身并不擅长它。
我已经看到一些引用必须在我尝试连接的网址上添加“; interface = wifi”,但是当我这样做时,逐步下载大型电影文件将在几秒后挂起。
还有什么方法可以让Blackberry应用程序只使用无线技术吗?是否有我可以使用的签名类可以处理这个?
修改
看起来正在发生的事情是网络很难有机会不工作 - 一般套接字例外。问题是,对于大型文件,我正在以256k的块进行许多连接,因此对于大型文件,最终会出现错误的问题。我真的不确定如何处理这个问题。
修改
我已经使用了我的Connector.open方法,使用了具有超时选项的.open版本。如果特定的网络呼叫没有返回,这是我的问题,除了例外,它会在几秒后重试。它也用于例外。这充其量只是一个临时修复,如果有人知道改善非BES网络性能的方法,我很乐意听到它。
答案 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连接