CertPathValidatorException:未找到证书路径的信任锚在 Smack 项目中

问题描述

我正在使用 Smack 库:

def smack_version = "4.3.3"
implementation "org.igniterealtime.smack:smack-android:$smack_version"
// Optional for XMPPTCPConnection
implementation "org.igniterealtime.smack:smack-tcp:$smack_version"
// Optional for XMPP-IM (RFC 6121) support (Roster,Threaded Chats,…)
implementation "org.igniterealtime.smack:smack-im:$smack_version"
// Optional for XMPP extensions support
implementation "org.igniterealtime.smack:smack-extensions:$smack_version"



private fun callMam() {
    /*val manager = MamManager.getInstanceFor(connection)
    val numberOfMessages = 500
    val userBareJID = 5415845
    val r = (manager.mostRecentPage(userBareJID,numberOfMessages)) as MamManager.MamQueryResult
    if (r.forwardedMessages.size() >= 1) {
        val message: Message = r.forwardedMessages.get(0).getForwardedStanza() as Message
        Log.i("MAM_TAG","message received" + message.getBody())
    }*/

    Coroutinescope(Main).launch {
        val xmppConnection = getXmppConnection()
        if (xmppConnection == null) {
            Log.w("Xmpp_TAG","xmppConnection is null")
            return@launch
        }
        val chatManager: ChatManager = ChatManager.getInstanceFor(xmppConnection).apply {
            addIncomingListener { from,message,chat ->
                {
                    Log.w("Xmpp_TAG","from: $from,message: $message,chat: $chat")
                }
            }
            addOutgoingListener { to,"to: $to,chat: $chat")
                }
            }
        }
        val newChat: Chat =
            chatManager.chatWith(xmppConnection.user.asEntityBareJid()) // "harsh@192.168.0.200"
        try {
            newChat.send("Howdy!")
        } catch (e: NotConnectedException) {
            Log.e("Xmpp_TAG","NotConnectedException: ${e.message}",e)
        }
    }
}

private fun getXmppConfiguration(): XMPPTCPConnectionConfiguration {
    val defaultReplyTimeout = 10000
    SmackConfiguration.setDefaultReplyTimeout(defaultReplyTimeout)
    return XMPPTCPConnectionConfiguration.builder()
        .setUsernameAndPassword(usernameTest,passwordTest)
        .setXmppDomain(serverNameTest)
        .setHost(serverNameTest)
        .setPort(portTest)
        .setSecurityMode(ConnectionConfiguration.SecurityMode.ifpossible)
        .build()
}

private fun getXmppConnection(): XMPPConnection? {
    val xmppConnection: AbstractXMPPConnection = XMPPTCPConnection(getXmppConfiguration())
    try {
        xmppConnection.apply {
            connect() // Error line,Throws CertPathValidatorException
            login()
            val presence = Presence(Presence.Type.unavailable).apply {
                status = "Gone fishing"
            }
            // Send the packet (assume we have an XMPPConnection instance called "con").
            sendStanza(presence)
        }
        return xmppConnection
    } catch (e: SmackException) {
        Log.e("Xmpp_TAG","SmackException: ${e.message}",e)
    } catch (e: IOException) {
        Log.e("Xmpp_TAG","IOException: ${e.message}",e)
    } catch (e: XMPPException) {
        Log.e("Xmpp_TAG","XMPPException: ${e.message}",e)
    }
    return null
}

显示了以下错误

CertPathValidatorException:未找到证书路径的信任锚。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...