Android-Reformation2-java.security.cert.CertPathValidator异常:找不到证书路径的信任锚点

Android-Reformation2-java.security.cert.CertPathValidator异常:找不到证书路径的信任锚点,java,android,ssl,retrofit2,Java,Android,Ssl,Retrofit2,我想从服务器()获取数据,作为json对象数组。但我得到了这个日志: java.security.cert.CertPathValidator异常:找不到证书路径的信任锚。 我正在使用改型2,下面是我的代码: MainActivity.java DataEgovApi.java 您的服务器url是https,证书已经无效 将https更改为http,它就会工作。 否则,您可以在服务器上安装有效的SSL证书 在BASE_URL中将https更改为http,它将起作用。在短期内,更改为http可以

我想从服务器()获取数据,作为json对象数组。但我得到了这个日志: java.security.cert.CertPathValidator异常:找不到证书路径的信任锚。 我正在使用改型2,下面是我的代码:

MainActivity.java DataEgovApi.java
您的服务器url是https,证书已经无效

https
更改为
http
,它就会工作。

否则,您可以在服务器上安装有效的SSL证书


在BASE_URL中将https更改为http,它将起作用。在短期内,更改为http可以进行测试,直到服务器证书修复为止。不要在生产中这样做。此答案无法揭示解决方案中涉及的安全性损失。
public class MainActivity extends AppCompatActivity
    implements GetAdmissionSchedule.GetAdmissionScheduleInterface {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        GetAdmissionSchedule getAdmissionSchedule = new GetAdmissionSchedule(this);
        getAdmissionSchedule.getAdmissionScheduleList();
    }

    @Override
    public void getAdmissionSchedule(List<AdmissionSchedule> admissionScheduleList) {
        // here i get my data
    }

}
public class GetAdmissionSchedule {

    private GetAdmissionScheduleInterface getAdmissionScheduleInterface;

    public GetAdmissionSchedule(GetAdmissionScheduleInterface getAdmissionScheduleInterface) {
        this.getAdmissionScheduleInterface = getAdmissionScheduleInterface;
    }

    public interface GetAdmissionScheduleInterface {
        void getAdmissionSchedule(List<AdmissionSchedule> admissionScheduleList);
    }

    public void getAdmissionScheduleList() {
        DataEgovApi service = DataEgovBaseURL.getRetrofit();
        Call<List<AdmissionSchedule>> call = service.getAdmissionScheduleList();
        call.enqueue(new Callback<List<AdmissionSchedule>>() {
            @Override
            public void onResponse(Call<List<AdmissionSchedule>> call, Response<List<AdmissionSchedule>> response) {
                Log.d("MyLogs", "MVD: getAdmissionScheduleList " + response.code());
                getAdmissionScheduleInterface.getAdmissionSchedule(response.body());
            }

            @Override
            public void onFailure(Call<List<AdmissionSchedule>> call, Throwable t) {
                Log.d("MyLogs", "MVD: getAdmissionScheduleList " + t.getLocalizedMessage());
                getAdmissionScheduleInterface.getAdmissionSchedule(null);
            }
        });
    }

}
public class DataEgovBaseURL {

    private static final String BASE_URL = "https://data.egov.kz/";
    private static Retrofit retrofit = null;

    public static DataEgovApi  getRetrofit() {
        if (retrofit == null) {
            retrofit = new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();

        }
        return retrofit.create(DataEgovApi.class);
    }

}
public interface DataEgovApi {

    @GET("api/v2/zheke_zhane_zandy_tulgalardy_k1/v6?pretty")
    Call<List<AdmissionSchedule>> getAdmissionScheduleList();

}
public class AdmissionSchedule {

    @SerializedName("id")
    @Expose
    private String id;
    @SerializedName("vremia")
    @Expose
    private String vremia;
    @SerializedName("adres_ru")
    @Expose
    private String adresRu;
    @SerializedName("doljnost_ru")
    @Expose
    private String doljnostRu;
    @SerializedName("name_ru")
    @Expose
    private String nameRu;
    @SerializedName("data")
    @Expose
    private String data;
    @SerializedName("adres_kz")
    @Expose
    private String adresKz;
    @SerializedName("doljnost_kz")
    @Expose
    private String doljnostKz;
    @SerializedName("name_kz")
    @Expose
    private String nameKz;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getVremia() {
        return vremia;
    }

    public void setVremia(String vremia) {
        this.vremia = vremia;
    }

    public String getAdresRu() {
        return adresRu;
    }

    public void setAdresRu(String adresRu) {
        this.adresRu = adresRu;
    }

    public String getDoljnostRu() {
        return doljnostRu;
    }

    public void setDoljnostRu(String doljnostRu) {
        this.doljnostRu = doljnostRu;
    }

    public String getNameRu() {
        return nameRu;
    }

    public void setNameRu(String nameRu) {
        this.nameRu = nameRu;
    }

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }

    public String getAdresKz() {
        return adresKz;
    }

    public void setAdresKz(String adresKz) {
        this.adresKz = adresKz;
    }

    public String getDoljnostKz() {
        return doljnostKz;
    }

    public void setDoljnostKz(String doljnostKz) {
        this.doljnostKz = doljnostKz;
    }

    public String getNameKz() {
        return nameKz;
    }

    public void setNameKz(String nameKz) {
        this.nameKz = nameKz;
    }

}