尝试使用Connector.open()打开TLS连接时在BlackBerry上引发EOFEException
有时,当我试图通过Wi-Fi与用户建立TLS连接时,会出现EOFEException尝试使用Connector.open()打开TLS连接时在BlackBerry上引发EOFEException,blackberry,connection,ssl,eofexception,Blackberry,Connection,Ssl,Eofexception,有时,当我试图通过Wi-Fi与用户建立TLS连接时,会出现EOFEException Connector.open("tls://sub.domain.com:443;deviceside=true;interface=wifi;EndToEndRequired"); 对Connector.open的调用被阻止。EOFEException在调用Connector.open大约10秒后抛出。目前,我无法检查服务器端发生了什么 编辑: 调用Connector.open的线程不是主事件线程。这个问题
Connector.open("tls://sub.domain.com:443;deviceside=true;interface=wifi;EndToEndRequired");
对Connector.open的调用被阻止。EOFEException在调用Connector.open大约10秒后抛出。目前,我无法检查服务器端发生了什么
编辑:
调用Connector.open的线程不是主事件线程。这个问题出现在运行OS 6的各种设备上,尽管我不认为这个问题是特定于OS的
关于如何解决这个问题,或者是什么导致了这个错误,有什么想法吗
更新:
在某些情况下,对Connector.open的调用也会产生一个封装在TLSIOException中的TLSAlertException。异常不会立即抛出,而是在大约10秒后抛出,如前面提到的EOFEException。最后,我能够在服务器端捕获TLS握手,并看到以下内容: 服务器收到了客户机Hello消息 服务器响应了服务器Hello消息 大约10秒钟内未从客户端接收到客户端密钥交换 服务器关闭了与客户端的连接
由于我看不到影响Connector.open流的方法,所以我唯一能做的就是重试。在捕获EOFEException或TLSAlertException以及其他可能与TLS相关的异常后,我从未看到它连续发生两次 两个问题:1您确定Connector.open正在引发异常吗?2是否在操作系统事件线程之外的单独线程上调用Connector.open?是,异常由Connector.open和Yes引发,它是从不同的线程而不是主事件线程调用的。除非异常消息中有诊断信息(不幸的是不太可能)或堆栈跟踪,否则我会怀疑服务器抛出了BlackBerry没有预料到的东西。可以设置一个您可以检查的服务器,或者如果在代码的其余部分中有意义,可以尝试使用已知良好服务器的站点。我使用这种连接与安全的Web服务器通信,但通常使用https协议。@Richard遗憾的是,对于异常消息,没有诊断null。我同意你的看法,服务器可能抛出了一些东西,可能在TLS握手过程中出了问题。在黑莓方面,这与它没有多大关系。谢谢你的回答。