2016-12-13 6 views
2

я мигрировал сервер от HTTP к HTTPS я использовал самостоятельно подписанный сертификат для отправки сетевых запросов с HttpUrlConnection и он работал, но для загрузки изображений он не работает, поскольку я использовал загрузку Glide для загрузки.Glide - javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Целевой якорь для пути сертификации не найден

javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Целевой якорь для пути сертификации не found.while загрузки изображений с HTTPS URL через библиотеку глиссады

Glide.with(mContext).load(currentItem.getImage_path().replace(" ", "%20")) 
    .listener(new RequestListener<String, GlideDrawable>() { 
     @Override 
     public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { 
      genericViewHolder.imageView_1.setImageResource(R.drawable.image_thumbnail); 
      genericViewHolder.progressBar.setVisibility(View.GONE); 
      return false; 
     } 

     @Override 
     public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { 
      genericViewHolder.progressBar.setVisibility(View.GONE); 
      return false; 
     } 
    }).into(genericViewHolder.imageView_1); 

Я пробовал использовать ссылку this и использовал GlideModule, но он, похоже, не работает. Пожалуйста помоги.

+0

Возможный дубликат [javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Целевой якорь для пути сертификации не найден] (http://stackoverflow.com/questions/21047414/javax-net-ssl-sslhandshakeexception-java-security-cert-certpathvalidatorexcepti) – EJP

+0

Это не дубликат, потому что он не принадлежит HTTPUrlConnection, я сталкиваюсь с этим ISSU e с загрузкой изображения Glide. Можете ли вы мне помочь? –

+0

Это дубликат, потому что проблема точно такая же: сертификату сервера не доверяют. – EJP

ответ

2

Речь идет о сертификате по этой ссылке - сертификат перепускной https://stackoverflow.com/a/39032433/4741746

Это будет и позволит вам войти в систему

эта ссылка также - https://futurestud.io/tutorials/glide-module-example-accepting-self-signed-https-certificates

создать свой собственный GlideModule класса, OkHttpUrlLoader класс и приложите к вам Glide, как упоминалось в ссылке выше

Вы должны положить

<meta-data 
     android:name="io.futurestud.tutorials.glide.glidemodule.CustomImageSizeGlideModule" 
     android:value="GlideModule" /> 

Внутри приложения тегом AndroidMainifiest файл https://github.com/fs-opensource/android-tutorials-glide/blob/master/app/src/main/AndroidManifest.xml

+0

Не могли бы вы рассказать мне, как это будет работать с существующим кодом? И будет ли это работать и в производстве? –

+0

Я уже посетил тот же блог, но мне это не помогло. –

+1

, наконец, помогли https://futurestud.io/tutorials/glide-module-example-accepting-self-signed-https-certificates. Спасибо за поддержку –

0

Для Glide 4

@GlideModule 
public class MyGlideModule extends AppGlideModule { 

    @Override 
    public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) { 

     //To Attach Self Signed Ssl Certificate 
     /*OkHttpClient okHttpClient = new OkHttpClient.Builder() 
       .sslSocketFactory(sslSocketFactory, X509TrustManager) 
       .build();*/ 

     //Unsafe Okhttp client 
     OkHttpClient okHttpClient= UnsafeHttpsClient.getUnsafeOkHttpClient(); 

     registry.replace(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(okHttpClient)); 
    } 
}