Подтвердить что ты не робот

OkHTTP и Picasso не работают вместе

Я использую библиотеку Picasso в своем проекте для загрузки изображений и кеширования их. Он работает без проблем. Однако, когда я пытаюсь использовать библиотеку OkHttp для обмена данными с моим сервером (связь JSON), Picasso генерирует исключения.

Я использую следующие банки: okhttp-2.0.0-RC2, okio-1.0.0, picasso-2.2.0. Когда я запускаю свой проект после добавления этих банок, он выходит из строя со следующим:

06-12 11:13:15.824: E/dalvikvm(12105): Could not find class 'com.squareup.okhttp.HttpResponseCache', referenced from method com.squareup.picasso.OkHttpDownloader.<init>

Я добавил okhttp только для использования следующего метода:

public static String executeHttpGet(String urlStr) {
    Response response = null;
    String result = "";
    OkHttpClient client = new OkHttpClient();

    try {
        Request request = new Request.Builder().url(urlStr).build();

        response = client.newCall(request).execute();
        result = response.body().string();
    } catch (Exception ex) {

    }
    return result;
}

Приведенный выше код работает без проблем. Однако коды, которые используют библиотеку Picasso и отлично работают, начинают бросать следующее исключение:

06-12 11:19:49.307: E/AndroidRuntime(13036): FATAL EXCEPTION: main
06-12 11:19:49.307: E/AndroidRuntime(13036): java.lang.NoClassDefFoundError: com.squareup.okhttp.HttpResponseCache
06-12 11:19:49.307: E/AndroidRuntime(13036):    at com.squareup.picasso.OkHttpDownloader.<init>(OkHttpDownloader.java:74)
06-12 11:19:49.307: E/AndroidRuntime(13036):    at com.squareup.picasso.OkHttpDownloader.<init>(OkHttpDownloader.java:51)
06-12 11:19:49.307: E/AndroidRuntime(13036):    at com.squareup.picasso.OkHttpDownloader.<init>(OkHttpDownloader.java:41)
06-12 11:19:49.307: E/AndroidRuntime(13036):    at com.squareup.picasso.Utils$OkHttpLoaderCreator.create(Utils.java:319)
06-12 11:19:49.307: E/AndroidRuntime(13036):    at com.squareup.picasso.Utils.createDefaultDownloader(Utils.java:171)
06-12 11:19:49.307: E/AndroidRuntime(13036):    at com.squareup.picasso.Picasso$Builder.build(Picasso.java:490)
06-12 11:19:49.307: E/AndroidRuntime(13036):    at com.squareup.picasso.Picasso.with(Picasso.java:390)

My Class Path:

enter image description here

Если я удалю okhttp-2.0.0-RC2, okio-1.0.0, работают строки Пикассо.

Почему это происходит? Как я могу использовать две библиотеки вместе?

4b9b3361

Ответ 1

Эта комбинация работает для меня:

compile 'com.squareup.okhttp:okhttp:2.2.0'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'
compile 'com.squareup.picasso:picasso:2.4.0'

Ответ 2

Переключиться на Picasso 2.3.2. Вам также понадобится okhttp-urlconnection-2.0.0-RC2.

Ответ 3

//Below code for Picasso initializing once for the app
private Picasso picasso;
private OkHttpClient okHttpClient;

okHttpClient = new OkHttpClient();
picasso = new Picasso.Builder(this)
                .downloader(new OkHttpDownloader(okHttpClient))
                .build();

//Below code to retrieve the images whereever required on the app
picasso.with(context).load(imageUrl).placeholder(R.drawable.ic_launcher)

Этот код отлично работает для меня.

Ответ 4

Picasso использует 3 пакета.

  • Square.OhHttp
  • Square.OkIO
  • Square.Picasso

Вы хотите добавить 2 раза пакет OkHttp и OkIO из-за использования библиотеки OkHttp и библиотеки Picasso.

2 пакета включены в Picasso, вам не нужно включать в проект OkHttp-библиотеку.

Ответ 5

Попробуйте следующее:

compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.squareup.okhttp3:okhttp:3.0.1'

Ответ 6

Если вы используете eclipse IDE, в свойствах проекта → путь сборки java → порядок и экспорт (последняя вкладка) проверьте библиотеку picasso

У меня были те же ошибки. это сработало для меня, надеюсь, что это поможет. введите описание изображения здесь