我在android中使用reflect来连接服务器。
public class ApiClient {
public static final String BASE_URL = "https://example.com/";
private static Retrofit retrofit = null;
public static Retrofit getClient() {
if (retrofit==null) {
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
}
这是我的开发服务器,我想禁用证书检查。我如何在此代码中实现?
错误:javax.net.ssl.SSLHandshakeException:证书路径验证器异常:找不到证书路径的信任锚。
7条答案
按热度按时间thtygnil1#
使用我从Trusting all certificates with okHttp的答案中复制的这个类来获取不安全的Retrofit示例:
然后简单地使用reflect而不进行ssl检查,如下所示:
csga3l582#
自Hitesh Sahu的答案发布以来,语法发生了一些变化。现在您可以对一些方法使用lambdas,删除一些throw子句和chain builder方法调用。
pn9klfpd3#
在我的例子中,我用Kotlin解决了这个问题:
2ekbmq324#
IMO,你可以读Google's documentation - Security with HTTPS and SSL。
关于使用Retrofit与您的自签名证书的示例代码,请尝试以下操作,希望对您有帮助!
2admgd595#
我在这个页面上尝试了@whirlwin的解决方案,但在java 9+中不起作用。一些小的变化导致了这样的结果:
你可以想象,这对我很有效。快乐的日子!尽管如此,使用这个时要小心。
ix0qys7i6#
根据@Hitesh Sahu的回答,在Kotlin中添加代码:
现在创建Http客户端,如下所示:
MyManager类如下所示:
相同的进口如下所示:
6psbrbz97#
在代码中实现这种变通方法,即使是为了测试目的,也是一种不好的做法。
您可以:
1.生成CA。
1.使用CA签署证书。
1.将CA添加为受信任CA。
一些可能有用的链接: