gpt4 book ai didi

AndroidCAStore 在 4.2.2 Jellybean 上抛出 NullPointerException 警告

转载 作者:太空狗 更新时间:2023-10-29 14:21:20 28 4
gpt4 key购买 nike

我正在使用 XMPPConnection 的以下代码来获取 keystore 证书

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
conf.setTruststoreType("AndroidCAStore");
conf.setTruststorePassword(null);
conf.setTruststorePath(null);
}

此代码工作正常,我可以对用户进行身份验证。但它也会抛出以下异常作为警告

W/System.err(18470): java.lang.NullPointerException
W/System.err(18470): at java.io.File.fixSlashes(File.java:185)
W/System.err(18470): at java.io.File.<init>(File.java:134)
W/System.err(18470): at java.io.FileInputStream.<init> FileInputStream.java:105)
W/System.err(18470): at org.jivesoftware.smack.ServerTrustManager.<init>(ServerTrustManager.java:71)
W/System.err(18470): at org.jivesoftware.smack.XMPPConnection.proceedTLSReceived(XMPPConnection.java:871)
W/System.err(18470): at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:221)

看了source之后ServerTrustManager,我怀疑它在

in = new FileInputStream(configuration.getTruststorePath());

这是否意味着 android 无法找到 TruststorePath,如果是,我应该将其指向何处。

所有博客都说上面的代码应该可以工作,您不需要为信任库设置路径。

有什么想法吗?

最佳答案

我遇到了同样的问题。原因很简单,TrusstorePath 为空,这就是问题所在。

您必须更改 org.jivesoftware.smack 中的 ServerTrustManager.java 中的几行

if(options.getPassword() != null) {
password = options.getPassword().toCharArray();
}

if(options.getPath() == null) {
trustStore.load(null, password);
} else {
in = new FileInputStream(options.getPath());
trustStore.load(in, password);
}

而不是

in = new FileInputStream(configuration.getTruststorePath());

然后我添加了

InputStream in = null;
char[] password = null;

到同步块(synchronized block)的顶部。

我通知了 https://github.com/Flowdalic/asmack 的所有者

关于AndroidCAStore 在 4.2.2 Jellybean 上抛出 NullPointerException 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16703969/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com