Я изменил свое приложение с HTTP на HTTPS, Пикассо хорошо работал в HTTP, но не в HTTPS, я получил ошибку HTTP 504 при загрузке изображений.я использую эти версии
implementation 'com.squareup.okhttp:okhttp:2.7.5'
implementation 'com.squareup.okhttp:okhttp-urlconnection:2.4.0'
implementation 'com.squareup.picasso:picasso:2.71828'
и этот помощник:
public class PicassoTrustAll {
private static Picasso mInstance = null;
private PicassoTrustAll(Context context) {
TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
@Override
public void checkClientTrusted(java.security.cert.X509Certificate[] x509Certificates, String s) throws java.security.cert.CertificateException {
}
@Override
public void checkServerTrusted(java.security.cert.X509Certificate[] x509Certificates, String s) throws java.security.cert.CertificateException {
}
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return new java.security.cert.X509Certificate[]{};
}
}};
try {
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, trustAllCerts, null);
//OkHttpClient client = new OkHttpClient();
OkHttpClient.Builder b = new OkHttpClient.Builder();
b.readTimeout(30, TimeUnit.SECONDS);
b.writeTimeout(30, TimeUnit.SECONDS);
b.connectTimeout(30, TimeUnit.SECONDS);
b.addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
final Request.Builder newRequest = chain.request().newBuilder();
newRequest.addHeader("header_key", "header_value");
return chain.proceed(newRequest.build());
}
});
OkHttpClient client = b.build();
mInstance = new Picasso.Builder(context).downloader(new OkHttp3Downloader(client)).listener(new Picasso.Listener() {
@Override
public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception) {
Log.e("onImageLoadFailed", exception.getMessage());
}
}).build();
} catch (Exception e) {
e.printStackTrace();
}
}
public static Picasso getInstance(Context context) {
if (mInstance == null) {
new PicassoTrustAll(context);
}
return mInstance;
}
}
я также попытался настроить безопасность следующим образом: я создал XML-файл безопасности конфигурации
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">172.20.10.6</domain>
</domain-config>
</network-security-config>
и использовать его в manifest.xml:
android:networkSecurityConfig="@xml/network_security_config"
ничего из этого не работает, есть ли решение?