微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?