Java BlackBerry无法使用HTTPS连接到某些网页

Java BlackBerry无法使用HTTPS连接到某些网页,java,https,blackberry,Java,Https,Blackberry,我正在为BlackBerry 6.x系统编写一个Java应用程序,供我个人使用 所以我的发展遇到了巨大的障碍。基本上,我需要应用程序连接到一个特定的网页来检索一些数据。由于我需要使用明文凭证登录该站点,因此我强烈希望使用HTTPS 由于某种我无法理解的原因,该设备无法连接到我需要连接的站点以及其他许多站点 设备完全能够加载的页面包括,和 设备无法连接到的页面,以及 值得注意的是: 此问题发生在BlackBerry emulator和物理设备上。使用的物理设备是运行BlackBerryOS 6.

我正在为BlackBerry 6.x系统编写一个Java应用程序,供我个人使用

所以我的发展遇到了巨大的障碍。基本上,我需要应用程序连接到一个特定的网页来检索一些数据。由于我需要使用明文凭证登录该站点,因此我强烈希望使用HTTPS

由于某种我无法理解的原因,该设备无法连接到我需要连接的站点以及其他许多站点

设备完全能够加载的页面包括,和

设备无法连接到的页面,以及

值得注意的是:

  • 此问题发生在BlackBerry emulator和物理设备上。使用的物理设备是运行BlackBerryOS 6.3的BlackBerry Curve 9300。仿真器与此类似。(BlackBerry 7.x JDK附带的9600 emulator也存在同样的问题。)
  • 无法使用HTTPS通过Java代码访问的页面也无法使用系统中的默认浏览器访问。尽管能够使用第三方Opera迷你浏览器很好地连接到这些站点
  • 只有在尝试使用HttpsConnection而不是HttpConnection时,才会出现此问题。如果我使用不安全的HttpConnection,我可以连接到该站点,尽管我不希望使用它
以下是我尝试在设备上运行的总体要点:

public static final String SITE_URL = "https://duckduckgo.com";

HttpsConnection conn = null;

try {
    // Create connection
    conn = (HttpsConnection) Connector.open(SITE_URL + ";deviceside=true;interface=wifi", 3, true);

    // Try print certificate information
    Certificate c = conn.getSecurityInfo().getServerCertificate();
    Dialog.alert("Issuer: " + c.getIssuer() + " subj:" + c.getSubject());

    // Getting response code opens connection, sends request,
    // and reads HTTP headers.
    int rcode = conn.getResponseCode();
    if (rcode != HttpsConnection.HTTP_OK) {
        throw new IOException ("HTTP response: " + rcode);
    }   
    Dialog.alert("Response: " + rcode);
} catch (ClassCastException e) {
    throw new IllegalArgumentException("Not a HTTP URL");
} catch (IOException e) {
    Dialog.alert("IOException: " + e.getMessage());
} finally {
    // Close connection and stream.
    if (is != null)   { is.close(); }
    if (conn != null) { conn.close(); }
}
如果我将
SITE\u URL
更改为我知道可以连接到的东西(,等等),那么代码运行正常,我会得到一个HTTP 200。当我尝试连接到say时,程序只是抛出一个IOException。(特别是,如果我捕获所有相关的IOException子类,它似乎是一个TLSIOException),并在调用
getMessage()
时返回null

谢谢,

如果您有任何帮助或建议,我们将不胜感激。

您的服务器需要什么版本的TLS?BBOS已经很老了,我相信它只支持TLS1.0和SSL 3.0。您可以通过在设备上访问此站点进行验证


您连接的服务器可能也不支持这些旧版本。

谢谢您的回复。我使用默认的热点浏览器访问了该站点,事实上TLS1.0仅受支持。有趣的是,如果我使用Opera迷你浏览器访问该站点,它会说TLS1.2和1.1也受支持。您认为可以使用Java API使用TLS 1.2吗?Opera可能使用库来支持TLS 1.2,而不依赖操作系统的本机功能。您也可以这样做,但找到当前支持BBOS 6.0的库可能会很困难。