android - 无法使用 Asmack 连接到我的 ejabberd 服务器

标签 android keystore ejabberd asmack sasl

在 logcat 中获取这些错误:

06-26 02:34:08.352: W/System.err(1261): java.security.KeyStoreException: java.security.NoSuchAlgorithmException: KeyStore jks 实现未找到 06-26 02:34:08.352: W/System.err(1261): 在 java.security.KeyStore.getInstance(KeyStore.java:119) 06-26 02:34:08.352: W/System.err(1261): 在 org.jivesoftware.smack.ServerTrustManager.(ServerTrustManager.java:71) 06-26 02:34:08.352: W/System.err(1261): 在 org.jivesoftware.smack.XMPPConnection.proceedTLSReceived(XMPPConnection.java:858) 06-26 02:34:08.352:W/System.err(1261):在 org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:250) 06-26 02:34:08.352:W/System.err(1261):在 org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:46) 06-26 02:34:08.362:W/System.err(1261):在 org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:72) 06-26 02:34:08.362: W/System.err(1261): 由: java.security.NoSuchAlgorithmException: KeyStore jks implementation not found 引起 06-26 02:34:08.362:W/System.err(1261):在 org.apache.harmony.security.fortress.Engine.notFound(Engine.java:177) 06-26 02:34:08.362:W/System.err(1261):在 org.apache.harmony.security.fortress.Engine.getInstance(Engine.java:151) 06-26 02:34:08.362: W/System.err(1261): 在 java.security.KeyStore.getInstance(KeyStore.java:116) 06-26 02:34:08.362: W/System.err(1261): ... 5 更多

06-26 02:34:09.802:W/System.err(1261):使用 DIGEST-MD5 机制的 SASL 身份验证失败: 06-26 02:34:09.802:W/System.err(1261):在 org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java:341) 06-26 02:34:09.802: W/System.err(1261): 在 org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:242) 06-26 02:34:09.802: W/System.err(1261): 在 org.jivesoftware.smack.Connection.login(Connection.java:371) 06-26 02:34:09.802: W/System.err(1261): 在 com.example.contactupdater.MainActivity$MainActivity2.login(MainActivity.java:358) 06-26 02:34:09.802: W/System.err(1261): 在 com.example.contactupdater.MainActivity$MainActivity2.login(MainActivity.java:347) 06-26 02:34:09.802: W/System.err(1261): 在 com.example.contactupdater.MainActivity$1.run(MainActivity.java:320)

最佳答案

这里是这个问题的答案...

AndroidConnectionConfiguration config = new AndroidConnectionConfiguration(server,
                port);
       if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
            config.setTruststoreType("AndroidCAStore");
            config.setTruststorePassword(null);
            config.setTruststorePath(null);
        } else {
            config.setTruststoreType("BKS");
            String path = System.getProperty("javax.net.ssl.trustStore");
            if (path == null)
                path = System.getProperty("java.home") + File.separator + "etc"
                    + File.separator + "security" + File.separator
                    + "cacerts.bks";
            config.setTruststorePath(path);
        }

关于android - 无法使用 Asmack 连接到我的 ejabberd 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24424012/

相关文章:

android搜索对话框自定义

java - 公钥和 keystore 不匹配

node.js - 注册时的 node-xmpp C2SServer 连接问题

ios - 如何使用 xmppframework 创建一个新的聊天组?

Android App ID前缀问题

安卓模拟器错误

java - Java 代码在单个线程中的执行是否保证是顺序的?

java - 在 Java 中使用临时 keystore 的 2 种 SSL 方式

java - 如何在 Java 客户端中存储服务器密码以供以后重新连接?

python - 有没有 ejabberd python 库?