Android-Reformation2-java.security.cert.CertPathValidator异常:找不到证书路径的信任锚点
我想从服务器()获取数据,作为json对象数组。但我得到了这个日志: java.security.cert.CertPathValidator异常:找不到证书路径的信任锚。 我正在使用改型2,下面是我的代码: MainActivity.java DataEgovApi.javaAndroid-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可以
您的服务器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;
}
}