gpt4 book ai didi

Android:忽略自签名证书错误;实际实现?

转载 作者:搜寻专家 更新时间:2023-11-01 08:10:20 25 4
gpt4 key购买 nike

像这里的许多人一样,我正在尝试与具有自签名证书的站点进行通信。有很多类和代码 fragment 展示了如何做到这一点,例如HTTPS GET (SSL) with Android and self-signed server certificate ,但我找不到任何说明如何实际使用这些类的内容。我已经进行了大量试验,但我确信我只是遗漏了一些简单的东西。

具体来说,我正在尝试使用“Moss”提供的类;得票最多的答案。我仍然总是收到“不可信证书”消息。该主题中的另一个人也要求提供实现提示,但尚未得到答复。感谢您的帮助。

如果我可以将这个问题附加到该主题,我会更高兴,但我想像我这样的新手只能发布新问题(尽管我已经成为 SO 的粉丝一年多了)。

最佳答案

我们在一些项目中使用了类似的SocketFactoryX509TrustManager 实现。为了将这些类绑定(bind)到您的实现,您基本上应该做的就是将它们连接到用于客户端-服务器通信的 HttpClient(假设您正在使用它)。

我们通常有一种方法可以使用提到的工厂和信任管理器创建 HttpClient。它看起来有点像这样,大致基于内联评论中显示的链接。

protected HttpClient constructClient() {
HttpParams params = new BasicHttpParams();
params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);

// use the debug proxy to view internet traffic on the host computer
if (ABCApplication.isDebuggingProxy()) params.setParameter(ConnRoutePNames.DEFAULT_PROXY, new HttpHost(ABCConstants.DEBUG_PROXY_HOST, ABCConstants.DEBUG_PROXY_PORT, "http"));

// ignore ssl certification (due to signed authority not appearing on android list of permitted authorities)
// see: http://blog.antoine.li/2010/10/22/android-trusting-ssl-certificates/
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("http", new PlainSocketFactory(), 80));
registry.register(new Scheme("https", new FakeSocketFactory(), 443));
ClientConnectionManager cm = new SingleClientConnManager(params, registry);

return new DefaultHttpClient(cm, params);
}

希望对您的实现有所帮助。

关于Android:忽略自签名证书错误;实际实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10359140/

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