Android studio org apache http

Including Apache HTTP Client on Android Studio

less than 1 minute read

In order to use Apache HTTP Client (httpclient y httpmime) in Eclipse I used to download the Android port and then include the dependencies specifying the jar files: /home/lgallard//Android/libs/httpcore-4.3.2.jar /home/lgallard//Android/libs/httpmime-4.3.5.jar I kept this practice after migrating my projects to Android Studio, but I used Gradle to resolve the remaining libraries. Then to uniform everything, I did a research on how to include them. Just add the following lines to your app’s build.gradle file:

Then sync gradle and compile your project again.

Updated: June 17, 2015

Share on

Leave a Comment

You May Also Enjoy

Helm 3 local repo

Helm 3 local repo In Helm 3 the support of helm serve command was removed due to some design issues, therefore if you need a similar tool you have to insta.

Terraform module for AWS ECR

I share here another Terraform module I published as open source code, which allows you to create registries in AWS ECR.

Mouse Logitech MX Anywhere 2s Flounder on Linux

I bought a Logitech Mx Anywhere 2s Flounder mouse too free up a USB port, and be able to configure more buttons compared to the mouse I had.

Certified Kubernetes Administrator (CKA)

This post describes my experience and recommendations for tackling the Certified Kubernetes Administrator (CKA) exam by The Linux Foundation.

Источник

Add Org.Apache.Http.Legacy in Android Studio

Apache library is specially used to add HTTP ( Hyper Text Transfer Protocol ) into android applications. This library provides us the NameValuePair, BasicNameValuePair, HttpClient, HttpPost, HttpResponse methods which will enable us to use the send data on a particular functionality. So here is the step by step tutorial for Add Org.Apache.Http.Legacy in Android Studio.

Major errors found without adding Apache library :

  • Cannot resolve symbol ‘NameValuePair’ .
  • Cannot resolve symbol ‘BasicNameValuePair’ .
  • Cannot resolve symbol ‘HttpClient’ .
  • Cannot resolve symbol ‘DefaultHttpClient’ .
  • Cannot resolve symbol ‘HttpPost’ .
  • Cannot resolve symbol ‘UrlEncodedFormEntity’ .
  • Cannot resolve symbol ‘HttpResponse’ .
  • Cannot resolve symbol ‘HttpEntity’ .
  • Cannot resolve method ‘getEntity()’ .
  • Cannot resolve symbol ‘ClientProtocolException’ .
  • Cannot resolve method ‘execute(HttpPost)’ .

Screenshot of Error :

How to solve Org.Apache.Http.Legacy in not found error Android Studio.

1. Start a new development project in Android Studio or open your current project in which you want to import the library.

2. Click on project’s build.gradle(Module : app) .

3. Add useLibrary ‘org.apache.http.legacy’ in android scope.

Here you go now the Apache library is successfully added into your project.

Источник

HttpClient не будет импортировать в Android Studio

у меня есть простой класс, написанный в Android Studio:

и из этого я получаю следующую ошибку времени компиляции:

Cannot resolve symbol HttpClient

не HttpClient включены в Android Studio SDK? Даже если это не так, я добавил его в свою сборку Gradle следующим образом:

С последней строкой компиляции или без нее ошибка одинакова. Что я упускаю?

22 ответов

HttpClient больше не поддерживается в SDK 23. Вы должны использовать URLConnection или понижение до sdk 22 ( compile ‘com.android.support:appcompat-v7:22.2.0’ )

Если вам нужен sdk 23, добавьте это в свой gradle:

вы также можете попробовать загрузить и включить HttpClient jar прямо в ваш проект или использовать OkHttp вместо

HttpClient был устаревшим на уровне API 22 и удален на уровне API 23. Вы все еще можете использовать его на уровне API 23 и далее, если необходимо, однако лучше всего перейти к поддерживаемым методам обработки HTTP. Итак, если вы компилируете с 23, добавить в свою сборку.Gradle в:

использовать Apache HTTP для SDK уровня 23:

сборка верхнего уровня.gradle — / build.Gradle в

уведомление от Android studio об обновлении gradle:

Читайте также:  Notification on screen android

модуль конкретной сборки.gradle — / app / build.Gradle в

попробуйте это работать на меня Добавьте эту зависимость в свою сборку.файл gradle

2 — Откройте zip скопируйте файлы jar в папку libs. Вы можете найти его, если вы идете в верхней части вашего проекта, где говорится «Android»вы найдете список, когда вы щелкните его. Итак,

Android — > проект — > приложение — > libs

,затем поставить банки там.

3 — в строй.gradle (модуль: приложение) добавить

4-в классе java добавьте эти импорта:

HttpClient больше не поддерживается в sdk 23. Выпуск Android 6.0 (уровень API 23) удаляет поддержку HTTP-клиента Apache. Вы должны использовать

а также добавить ниже фрагмент кода в вашей зависимости:

/ / http окончательное решение для веб-сервиса (включая загрузку файлов)

Это также поможет вам во время использования Use MultipartEntity на загрузить.

в API 22 они становятся устаревшими, а в API 23 они полностью их удалили, простой обходной путь, если вам не нужны все причудливые вещи из новых дополнений, — просто использовать .jar-файлы из apache, которые были интегрированы до API 22 ,но разделены.файлы jar:

вы можете просто добавить это в зависимости Gradle:

выпуск Android 6.0 (уровень API 23) удаляет поддержку HTTP-клиента Apache. Поэтому вы не можете использовать эту библиотеку непосредственно в API 23. Но есть способ его использовать. Добавить useLibrary ‘ org.апаш.http.наследие » в вашей сборке.gradle файл, как показано ниже —

Если это не работает, вы можете применить следующий хак-

– копию орг.апаш.http.наследие.jar, который находится в / platforms / android-23 / необязательный путь вашего каталога Android SDK к приложению/libs вашего проекта папка.

— теперь добавьте файлы компиляции (‘libs / org.апаш.http.наследие.jar’) внутри раздела зависимостей<> сборки.файл gradle.

клиент ApacheHttp удаляется в v23 sdk. Вы можете использовать HttpURLConnection или сторонний Http-клиент, например OkHttp.

HttpClient не поддерживается в sdk 23 и 23+.

Если вам нужно использовать в sdk 23, добавьте ниже код к вашему gradle:

это работает для меня. Надеюсь, полезно для вас.

Если вам нужен sdk 23, добавьте это в свой gradle:

Источник

Какую библиотеку работы с HTTP в Android выбрать?

Представляю вашему вниманию перевод статьи «Which Android HTTP library to use?».

Для чего это вообще?

Немного истории

До Froyo HttpURLConnection имел некоторые не очень приятные баги. В частности, вызов close() у читаемого InputStream мог испортить пул соединений.

… большой размер их API мешает нам улучшать эту библиотеку без потери обратной совместимости. Команда Android не работает активно над Apache HTTP Client.

Apache HTTP client имеет мало багов на Eclair и Froyo, поэтому он является лучшим выбором для этих версий. А для Gingerbread и младше лучше подходит HttpURLConnection. Простота API и небольшой вес хорошо подходят для Android. Прозрачное сжатие и кэширование ответов помогают увеличить скорость и сохранить батарею. Новые приложения должны использовать HttpURLConnection.

Даже сегодня, если вы загляните в исходники Volley от Google (о ней я расскажу чуть попозже), вы сможете найти такое наследие:

Это классический пример фрагментации Android, которая заставляет страдать разработчиков. В 2013 году Square обратила внимание на эту проблему, когда выпускала OkHttp. OkHttp была создана для прямой работы с верхним уровнем сокетов Java, при этом не используя какие-либо дополнительные зависимости. Она поставляется в виде JAR-файла, так что разработчики могут использовать ее на любых устройствах с JVM (куда мы включаем, конечно, и Android). Для упрощения перехода на их библиотеку, Square имплементировали OkHttp используя интерфейсы HttpUrlConnection и Apache client.

OkHttp получила большое распространение и поддержку сообществом, и, в конце-концов, Google решили использовать версию 1.5 в Android 4.4 (KitKat). В июле 2015 Google официально признала AndroidHttpClient, основанный на Apache, устаревшим, вместе с выходом Android 5.1 (Lolipop).

Сегодня OkHttp поставляется со следующим огромным набором функций:

  1. Поддержка HTTP/2 и SPDY позволяет всем запросам, идущим к одному хосту, делиться сокетом
  2. Объединение запросов уменьшает время ожидания (если SPDY не доступен)
  3. Прозрачный GZIP позволяет уменьшить вес загружаемой информации
  4. Кэширование ответов позволяет избежать работу с сетью при повторных запросах.
  5. Поддержка как и синхронизированных блокирующих вызовов, так и асинхронных вызовов с обратным вызовом (callback)

Моя самая любимая часть OkHttp – как красиво и аккуратно можно работать с асинхронными запросами:

Это очень удобно, так как работа с сетью не должна быть в UI потоке. По-факту, начиная с Android 3.0 (Honeycomb, API 11), работа с сетью в отдельном потоке стала обязательной. Для того, чтобы воплотить что-то похожее с HtttpUrlConnection, вам потребуется построить большую (а может и монструозную) конструкцию с использованием AsyncTask или отдельного потока. Это будет еще более сложным, если вы захотите добавить отмену загрузки, объединение соединений и т.п.

Читайте также:  Телефоны андроид с nfc модулем

Кстати, не осталась у обочины и HTTP библиотека от Google под названием Volley, которая предоставляет нам следующие бонусы:

  1. Автоматическое планирование сетевых запросов
  2. Множество параллельных сетевых соединений
  3. Прозрачное кэширование в памяти и на диске, в соответствии со стандартной кэш-согласованностью.
  4. Поддержка приоритизации запросов.
  5. Отмена API запросов. Вы можете отменить как один запрос, так и целый блок.
  6. Простота настройки, например, для повторов и отсрочек.
  7. Строгая очередность, которая делает легким корректное заполнение данными, полученными асинхронно из сети, интерфейса пользователя.
  8. Инструменты отладки и трассировки

Все, что ни есть в Volley, находится на вершине HttpUrlConnection. Если вы хотите получить JSON или изображение, то Volley имеет на это специальный абстракции, такие как ImageRequest и JsonObjectRequest, которые помогают вам в автоматическом режиме конвертировать полезную нагрузку HTTP. Так же достойно внимания то, что Volley использует жестко запрограммированный размер сетевого пула:

Когда OkHttp использует поток для каждого вызова с ThreadPoolExecutor с максимальным значением Integer.MAX_VALUE:

В результате, в большинстве случаев OkHttp будет действовать быстрее за счет использования бОльшего количества потоков. Если по каким-то причинам вы захотите использовать OkHttp вместе Volley, то есть реализация HttpStack, которая использует API запросов/ответов из OkHttp заместо HttpURLConnection.

HTTP клиенты продолжили развиваться для поддержки приложений с большим количеством картинок, особенно тех, кто поддерживает бесконечную прокрутку и трансформацию изображений. В то же время, REST API стал стандартом в индустрии, и каждый разработчик имел дело с такими типовыми задачами как сериализация в/из JSON и преобразование REST-вызовов в интерфейсы Java. Не прошло много времени, как появились библиотеки, решающие эти задачи:

  1. Retrofit – типобезопасный HTTP Android клиент для взаимодействия с REST-интерфейсами
  2. Picasso – мощная библиотека для загрузки и кэширования изображений под Android

Retrofit предоставляет некий мост между Java кодом и REST-интерфейсом. Он позволяет быстро включить в ваш проект HTTP API интерфейсы, и генерирует самодокументирующуюся реализацию.

В дополнение ко всему, Retrofit поддерживает конвертацию в JSON, XML, протокол буферов (protocol buffers).

Picasso, с другой стороны, предоставляет HTTP библиотеку, ориентированную на работу с изображениями. Например, вы можете загрузить изображение в свой View с помощью одной строчки:

Picasso и Retrofi настроены так, чтобы использовать OkHttpClient как стандартный HTTP клиент. Однако, если хотите, вы можете указать клиентом HttpURLConnection.

Glide – что-то похожее на Picasso. Он предоставляет некоторые дополнительные функции, такие как GIF-анимация, генерация миниатюрных эскизов изображения и неподвижные видео. Полное сравнение можно найти здесь.

Facebook недавно открыли общественности исходный код библиотеки Fresco, которую они используют в своем мобильном приложении. Одна из ключевых функций, которая выделяет ее, — кастомная стратегия выделения памяти для bitmap’ов, чтобы избежать работы долгого GC (сборщик мусора). Fresco выделяет память в регионе, который называется ashmem. Используются некие трюки, чтобы иметь доступ к этому региону памяти доступ как из части, написанной на C++, так и из части на Java. Чтобы уменьшить потребление CPU и данных из сети, эта библиотека использует 3 уровня кэша: 2 в ОЗУ, третий во внутреннем хранилище.

Я нашел необходимым показать отношения между библиотеками на одной схеме. Как вы можете увидеть, HTTP всегда остается внизу у высокоуровневых библиотек. Вы можете выбирать между простым HttpUrlConnection или последним OkHttpClient. Мы используем эту совместимость при разработке PacketZoom Android SDK, о котором мы поговорим в следующем посте.

Недавно мы сравнивали между собой HTTP библиотеки по производительности, но эта тема заслужила отдельного рассмотрения. Мы надеемся, что этот обзор дал вам основные идеи о плюсах и минусах каждой библиотеки, и мы помогли вам сделать правильный выбор. Следите за выходом более интересных постов о сетевой работе в Android от нас.

Источник

HttpClient не будет импортироваться в Android Studio

У меня есть простой класс, написанный в Android Studio:

И из этого я получаю следующую ошибку времени компиляции:

Cannot resolve symbol HttpClient

Читайте также:  Веб сообщения для андроида

Не включен ли HttpClient в Android Studio SDK? Даже если это не так, я добавил его в свою сборку Gradle следующим образом:

С или без последней строки компиляции ошибка одинакова. Что мне не хватает?

HttpClient больше не поддерживается в sdk 23. Вы должны использовать URLConnection или downgrade для sdk 22 ( compile ‘com.android.support:appcompat-v7:22.2.0’ )

Если вам нужен sdk 23, добавьте это в свою граду:

Вы также можете попытаться загрузить и включить банку HttpClient непосредственно в свой проект или вместо этого использовать OkHttp

HttpClient устарел на уровне API 22 и удален в API-уровне 23. Вы все равно можете использовать его в API-интерфейсе 23 и далее, если вам нужно, однако лучше всего перейти к поддерживаемым методам обработки HTTP. Итак, если вы компилируете с 23, добавьте это в свой build.gradle:

Ответ TejaDroid в ссылке ниже помог мне. Не удается импортировать org.apache.http.HttpResponse в Android Studio

Использовать Apache HTTP для SDK уровня 23:

Верхний уровень build.gradle – /build.gradle

Уведомление от студии Android о обновлении градиента:

Специфический модуль build.gradle – /app/build.gradle

Попробуйте это сработало для меня. Добавьте эту зависимость в файл build.gradle.

2- Откройте zip, скопируйте файлы jar в папку libs. Вы можете найти его, если перейдете к вершине своего проекта, где говорится «Android», вы найдете список, когда вы нажмете его. Так,

Android -> Проект -> приложение -> libs

, Тогда поставьте банки там.

3- В build.grale (Mudule: приложение) добавить

4- В классе java добавьте следующие импорты:

HttpClient больше не поддерживается в sdk 23. Релиз Android 6.0 (API Level 23) удаляет поддержку для HTTP-клиента Apache. Вы должны использовать

А также добавить ниже фрагмент кода в вашей зависимости:

// http окончательное решение для веб-сервиса (включая загрузку файлов)

Это также поможет вам, пока вы используете Use MultipartEntity для загрузки файлов .

В API 22 они устаревают, а в API 23 они полностью их удалили, простое обходное решение, если вам не нужны все причудливые вещи из новых дополнений, – просто использовать файлы .jar из apache, которые были интегрированы перед API 22, но Как разделенные файлы .jar:

Клиент ApacheHttp удален в v23 sdk. Вы можете использовать HttpURLConnection или сторонний Http-клиент, например OkHttp.

Выпуск Android 6.0 (API Level 23) удаляет поддержку для HTTP-клиента Apache. Следовательно, вы не можете использовать эту библиотеку непосредственно в API 23. Но есть способ ее использования. Добавить useLibrary ‘org.apache.http.legacy’ в файле build.gradle, как показано ниже,

Если это не сработает, вы можете применить следующие хак-

– Скопируйте org.apache.http.legacy.jar, который находится в каталоге / platform / android-23 / optional вашего каталога Android SDK в папку приложения / libs вашего проекта.

– Теперь добавьте компилируемые файлы (‘libs / org.apache.http.legacy.jar’) в раздел зависимостей <> файла build.gradle.

Вы можете просто добавить это в зависимости от Gradle:

Просто используйте это: –

HttpClient не поддерживается в sdk 23 и 23+.

Если вам нужно использовать в sdk 23, добавьте ниже код в свою граду:

Это работает для меня. Надеюсь, полезно для вас.

Какой целевой API вы используете в своем проекте? AndroidHttpClient предназначен только для уровня API 8 И, пожалуйста, посмотрите здесь

Наслаждайся своим кодом 🙂

Другой способ – если у вас есть файл httpclient.jar, вы можете сделать это:

Вставьте свой .jar-файл в папку «libs» в вашем проекте. Затем в градиенте добавьте эту строку в свой build.gradle (Module: app)

Если вам нужен sdk 23, добавьте это в свою граду:

Вы должны добавить только одну строку

В build.gradle (Module: app), например

Добавьте эти две строки в зависимости от зависимостей

Как уже упоминалось ранее, org.apache.http.client.HttpClient больше не поддерживается:

SDK (уровень API) # 23.

Вы должны использовать java.net.HttpURLConnection .

Если вы хотите упростить свой код (и жизнь) при использовании HttpURLConnection , вот Wrapper этого класса, который позволит вам выполнять простые операции с GET , POST и PUT с помощью JSON , например, с помощью HTTP PUT .

Не стесняйтесь использовать его.

Я думаю, что в зависимости от того, какая версия Android Studio у вас есть, важно также обновить свою студию Android, я тоже разочаровался в советах каждого, но не повезло, пока мне не пришлось обновлять версию для Android от 1.3 до 1.5, ошибки исчезли, как магия.

Источник

Оцените статью