仿真器给出失败响应:未找到证书路径的信任锚

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.

有什么建议吗?是什么导致了这种行为?

问题已解决, 需要从服务器端更改证书。