仿真器给出失败响应:未找到证书路径的信任锚
Emulator gives failure response: Trust anchor for certification path not found
我试图搜索这个错误很多没有找到任何解决方案。
详情:
通过改装向 API 发出请求,获得真实设备的成功响应,但如果从 android 模拟器发出请求,则获得失败响应。
public void loadPostsToDB() {
Call<List<Post>> call = mAPIServiceInterface.getAllPosts();
call.enqueue(new Callback<List<Post>>() {
@Override
public void onResponse(Call<List<Post>> call, Response<List<Post>> response) {
List<Post> posts = response.body();
new InsertPostAsyncTask(mDaoInterface,posts).execute();
}
@Override
public void onFailure(Call<List<Post>> call, Throwable t) {
Log.e("Failure Reason : "," "+t.toString());
}
});
}
在上面的代码中给出了响应,我通过调试进行了检查,根据它,当来自真实设备的 运行 时,点命中成功,但如果来自模拟器的 运行,则失败功能调试点被命中。
下面是打印出来的日志。
2020-12-01 20:57:23.647 6863-6879/reference.module.retrofit D/OkHttp: --> GET https://jsonplaceholder.typicode.com/posts
2020-12-01 20:57:23.647 6863-6879/reference.module.retrofit D/OkHttp: --> END GET
2020-12-01 20:57:23.828 6863-6882/reference.module.retrofit I/OpenGLRenderer: Initialized EGL, version 1.4
2020-12-01 20:57:23.828 6863-6882/reference.module.retrofit D/OpenGLRenderer: Swap behavior 1
2020-12-01 20:57:23.829 6863-6882/reference.module.retrofit W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
2020-12-01 20:57:23.829 6863-6882/reference.module.retrofit D/OpenGLRenderer: Swap behavior 0
2020-12-01 20:57:23.849 6863-6882/reference.module.retrofit D/EGL_emulation: eglCreateContext: 0x9ca04240: maj 2 min 0 rcv 2
2020-12-01 20:57:23.924 6863-6882/reference.module.retrofit D/EGL_emulation: eglMakeCurrent: 0x9ca04240: ver 2 0 (tinfo 0x9ca037d0)
2020-12-01 20:57:24.135 6863-6882/reference.module.retrofit D/EGL_emulation: eglMakeCurrent: 0x9ca04240: ver 2 0 (tinfo 0x9ca037d0)
2020-12-01 20:57:24.278 6863-6879/reference.module.retrofit D/OkHttp: <-- HTTP FAILED: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
2020-12-01 20:57:24.279 6863-6863/reference.module.retrofit E/Failure Reason :: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
有什么建议吗?是什么导致了这种行为?
问题已解决,
需要从服务器端更改证书。
我试图搜索这个错误很多没有找到任何解决方案。
详情:
通过改装向 API 发出请求,获得真实设备的成功响应,但如果从 android 模拟器发出请求,则获得失败响应。
public void loadPostsToDB() {
Call<List<Post>> call = mAPIServiceInterface.getAllPosts();
call.enqueue(new Callback<List<Post>>() {
@Override
public void onResponse(Call<List<Post>> call, Response<List<Post>> response) {
List<Post> posts = response.body();
new InsertPostAsyncTask(mDaoInterface,posts).execute();
}
@Override
public void onFailure(Call<List<Post>> call, Throwable t) {
Log.e("Failure Reason : "," "+t.toString());
}
});
}
在上面的代码中给出了响应,我通过调试进行了检查,根据它,当来自真实设备的 运行 时,点命中成功,但如果来自模拟器的 运行,则失败功能调试点被命中。
下面是打印出来的日志。
2020-12-01 20:57:23.647 6863-6879/reference.module.retrofit D/OkHttp: --> GET https://jsonplaceholder.typicode.com/posts
2020-12-01 20:57:23.647 6863-6879/reference.module.retrofit D/OkHttp: --> END GET
2020-12-01 20:57:23.828 6863-6882/reference.module.retrofit I/OpenGLRenderer: Initialized EGL, version 1.4
2020-12-01 20:57:23.828 6863-6882/reference.module.retrofit D/OpenGLRenderer: Swap behavior 1
2020-12-01 20:57:23.829 6863-6882/reference.module.retrofit W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
2020-12-01 20:57:23.829 6863-6882/reference.module.retrofit D/OpenGLRenderer: Swap behavior 0
2020-12-01 20:57:23.849 6863-6882/reference.module.retrofit D/EGL_emulation: eglCreateContext: 0x9ca04240: maj 2 min 0 rcv 2
2020-12-01 20:57:23.924 6863-6882/reference.module.retrofit D/EGL_emulation: eglMakeCurrent: 0x9ca04240: ver 2 0 (tinfo 0x9ca037d0)
2020-12-01 20:57:24.135 6863-6882/reference.module.retrofit D/EGL_emulation: eglMakeCurrent: 0x9ca04240: ver 2 0 (tinfo 0x9ca037d0)
2020-12-01 20:57:24.278 6863-6879/reference.module.retrofit D/OkHttp: <-- HTTP FAILED: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
2020-12-01 20:57:24.279 6863-6863/reference.module.retrofit E/Failure Reason :: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
有什么建议吗?是什么导致了这种行为?
问题已解决, 需要从服务器端更改证书。