Пользовательский загрузчик с использованием Picasso

Мне нужно загрузить изображение с URL-адреса, для которого требуются некоторые заголовки (имя пользователя, пароль) вместе с запросом. Поэтому я делаю это, используя приведенный здесь код. Но вызов этой функции дает ошибку

java.lang.NoClassDefFoundError: com.squareup.okhttp.OkHttpClient at com.squareup.picasso.OkHttpDownloader.<init>(OkHttpDownloader.java:72) 

Я использую библиотеки Picasso 2.3.3 и okhttp-urlconnection-2.0.0-RC2. Проблема также поднималась в этом сообщении, но изменение на 2.3.2 не работает.

У вас есть OkHttp, включенный в ваш проект? Если нет, проблема в том, что вы используете OkHttpDownloader. Вы можете включить библиотеку OkHttp в свой проект или просто UrlConnectionDownloader, как показано ниже.

В результате я закончил.

 public static Picasso getImageLoader(Context ctx) { Picasso.Builder builder = new Picasso.Builder(ctx); builder.downloader(new UrlConnectionDownloader(ctx) { @Override protected HttpURLConnection openConnection(Uri uri) throws IOException { HttpURLConnection connection = super.openConnection(uri); connection.setRequestProperty("X-HEADER", "VAL"); return connection; } }); return builder.build(); } 

Поскольку класс Picasso 2.5.0 OkHttpDownloader был изменен, вам нужно сделать что-то вроде этого:

 OkHttpClient picassoClient = new OkHttpClient(); picassoClient.networkinterceptors().add(new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Request newRequest = chain.request().newBuilder() .addHeader("X-HEADER", "VAL") .build(); return chain.proceed(newRequest); } }); new Picasso.Builder(context).downloader(new OkHttpDownloader(picassoClient)).build(); 

Источник: https://github.com/square/picasso/issues/900