Как правильно импортировать HttpClient из org.apache на Android с помощью файла сборки gradle?
Я вижу эту ошибку, когда пытаюсь запустить «gradle build»
Конец моего build.gradle выглядит так:
Почему процесс компиляции игнорирует HttpClient, но затем не удается скомпилировать?
ОТВЕТЫ
Ответ 1
Я думаю, что в библиотеке httpclient нет частей mime, которые находятся в httpmime. Это транзитивная зависимость httpclient, но поскольку это игнорируется, это не будет приниматься во внимание.
Попробуйте добавить эту зависимость:
Ответ 2
Добавление http-mime в качестве зависимости приводит к включению httpclient в качестве транзитивной зависимости, которая для меня привела к тем же предупреждениям, что и OP. Я должен был сказать gradle игнорировать переходную зависимость:
Ответ 3
Для Android теперь доступно HttpClient 4.3.X, упакованное дистрибутив Maven
Project repo: https://github.com/smarek/httpclient-android
Тег Maven: cz.msebera.android:httpclient:4.3.+
Опубликовано в хранилище Maven Central
В версии 4.3.3 включены HttpCore, HttpClient, HttpClient-Cache и HttpMime (все версии)
Отказ от ответственности: я автор проекта
Ответ 4
Добавление к этому Я решил проблему, используя это, если ваша compileSdkVersion равна 19 (IN MY CASE)
else, если ваш compileSdkVersion равен 23 затем используйте
Ответ 5
Поскольку официальные API Android включают httpclient, мы удаляем всю зависимость от httpclient, включая его транзитивную зависимость.
Если вы действительно хотите использовать httpclient, я бы переупаковал его с jarjar, переименовывая пакеты и использую это вместо этого.
Что касается httpmime, похоже, что это не на самом деле в android.jar, поэтому мы могли бы не фильтровать его, но теперь вам придется добавить его вручную.
Мы, вероятно, захотим настроить его до того, как система сборки будет 1.0
Источник
Apache httpclient android gradle
httpclient-android
Build script and dependencies to create repackaged upstream version of HttpClient and depdendencies (HttpMime, HttpCore, HttpClient-Cache) and get it working on Android API version from 3 to 23
Current version: 4.5.8 (originating from upstream HttpClient 4.5.8 version)
Download the repository and simply hit ./build.sh script
Required dependencies are:
- JDK 6 or newer
- Gradle 2.4 or newer
- find , grep , svn , patch and sed (or gsed for OS X)
- for Kerberos support you need Android NDK , git and swig
Build params (ENV variables) you can use:
- USE_GRADLE_WRAPPER , set to 0 if you want to use current Gradle from PATH
- UPDATE_UPSTREAM , whether the build script should download SVN/GIT/. sources again (useful for recurring builds)
- SED_CMD used variant of SED utility (default is sed -i on linux and gsed -i on Mac OS X)
- INCLUDE_JGSS_API , experimental, whether to include Kerberos API and Negotiate, SPNego, GGS, Kerberos Auth schemes implementation
- VERBOSE , set to 1 to get more verbose output
This repository version will publish the library under namespace cz.msebera.android:httpclient:4.5.8
Using gradle installArchives will install the library to local Maven repository
Gradle dependency string, once you have it installed
Or you can simply depend on the project, like this ( httpclient-android is resulting Gradle project dir)
Testing the library on the device
To test the library, you can use provided android app template, in the /testing-android-app folder
This template currently just shows the response from https://httpbin.org/headers if successfull, and the error message otherwise
If everything goes well, you should see, within seconds after running the last command, json with http headers of just finished HttpGet
Источник
Android Gradle Apache HttpClient не существует?
Я пытаюсь преобразовать проект IntelliJ в систему Gradle Android Studio, но я сталкиваюсь с ошибками с Apache HttpClient? Я что-то упускаю, ошибки, которые я получаю, следующие:
моя сборка.файл Gradle имеет следующие зависимости:
Кажется, что многие люди получают аналогичную проблему, но ни так, ни Google не имеют решения, поэтому я надеюсь, что этот вопрос поможет будущим поисковикам.
15 ответов
Я предлагаю вам заменить устаревший Apache HttpClient на новый HttpURLConnection.
это более чистое решение, его довольно легко перенести, и, как правило, лучше придерживаться последних изменений SDK, чем пытаться взломать / патч / обходной путь: вы обычно сожалеете об этом позже:)
Шаг 1
шаг 2
Шаг 2-бис
Если вы используете целевой sdk как 23, добавьте ниже код в свою сборку.Gradle в
и измените buildscript на
для получения дополнительной информации следуйте по этой ссылке
у меня была эта проблема, а затем я нашел эти страницы: Здесь вы можете увидеть, что библиотека apache устарела, но она не удалена, поэтому она должна работать. Это не так.
и здесь вы можете увидеть, как включить библиотеку apache в свой проект
Я решил проблему, добавив следующее в мою сборку.gradle файл, как рекомендовано во второй ссылке.
это работает только если вы используются gradle 1.3.0-beta2 или выше, поэтому вам придется добавить это в зависимости buildscript, если вы находитесь в более низкой версии:
надеюсь, что это помогает.
скопировать org.apache.http.legacy.jar который находится в Android/Sdk/platforms/android-23/optional папка to app/libs
и добавил эту строку в приложение.файл gradle
но если вы используете больше библиотек jar, вы можете использовать этот способ
добавьте эту библиотеку в Build.Gradle в
Я надеюсь, что это сработает.
в основном все, что вам нужно сделать, это добавить:
в сборку.файл gradle.
я столкнулся с такой же проблемой. Ответ Даниэля Ньюджента немного помог (после того, как он последовал его совету HttpResponse был найден-но HttpClient все-таки не хватает).
Итак, вот что исправило это для меня:
- (если еще не сделано, рекомендуем предыдущие заявления импорта)
- посетить http://hc.apache.org/downloads.cgi
- скачать 4.5.1.zip из двоичного разделе
- распаковать его и вставить httpcore-4.4.3 & httpclient-4.5.1.jar in project/libs папку
- правой кнопкой по jar и выберите добавить в библиотеку.
надеюсь, что это помогает.
я столкнулся с аналогичными проблемами, вы могли бы заставить его работать с помощью аналогичного метода.
во-первых, попробуйте это с текущей конфигурацией, исключить httpclient С httpmime :
в моем случае я исправил его, используя следующие банки:
затем, в сборке.gradle, исключая httpclient от httpmime :
идеальный ответ от Jinu и Daniel
добавление к этому Я решил проблему, используя это, если ваш compileSdkVersion равен 19 (в моем случае)
else, если ваш compileSdkVersion равен 23 тогда используйте
Это то, что я сделал, и это работает для меня.
Шаг 1: добавьте это в построении.класс(модуль: приложение)
Шаг 2: синхронизация проекта и готово.
версия HTTP-клиента Apache, предоставленная на складе Android, была очень очень старые.
Google Android 1.0 был выпущен с предварительным бета-снимком Apache HttpClient. Чтобы совпасть с первым выпуском Android Apache HttpClient 4.0 APIs должен был быть заморожен преждевременно, в то время как многие интерфейсы и внутренние структуры все еще не были полностью разработаны. Поскольку Apache HttpClient 4.0 созревал, проект ожидал, что Google включит последнюю версию улучшения кода в их дереве кода. К сожалению, этого не произошло.
а вы мог бы продолжайте использовать старую устаревшую библиотеку через useLibrary ‘org.apache.http.legacy’ обходной путь (предложенный @Jinu и другими), вам действительно нужно укусить пулю и обновить что-то еще, например, родной Android HttpUrlConnection , или если это не отвечает вашим потребностям, вы можете использовать библиотека OkHttp, что HttpUrlConnection is основываясь на в любом случае.
OkHttp на самом деле имеет совместимость слое который использует тот же API, что и клиент Apache, хотя они не реализуют все из тех же функций, так что ваш пробег может варьироваться.
пока можно импортировать более новую версию клиента Apache (как предложил @MartinPfeffer), вероятно, что большинство классов и методов, которые вы использовали раньше, были устаревшими, и есть довольно большой риск того, что обновление приведет к ошибкам в вашем коде (например, я нашел некоторые соединения, которые ранее работали из-за прокси-сервера, больше не работали), поэтому это не отличное решение.
потратив несколько дней на эту тему, мне наконец удалось ее решить. К сожалению, нам это нужно, если мы хотим использовать файлы расширения. Решение было предоставлено несколькими людьми здесь, но для меня ответы отсутствовали несколько незначительных деталей, которые могли бы сэкономить много времени для меня. Вот последовательность событий для новичков, таких как я, чтобы сэкономить ваше драгоценное время.
сначала я импортировал папку «Библиотека» из D:\Users\Imre\AppData\Local\Android\sdk1\extras\google\play_licensing к проекту, перейдя в Файл, Создать, импортировать модуль и перейдите в папку «Библиотека». Если вы откроете менеджер SDK и нажмите » запустить автономный менеджер SDK «в нижней части всплывающего экрана, вы можете навести указатель мыши на папку» дополнительно » внизу, и небольшая желтая информация скажет вам, где вы найдете пакет, который вам нужно импортировать.
Как только это будет сделано, перейдите в раздел «Библиотека» в левой панели с «Project» и в нем » Android» вкладка открыта. Откройте раздел java библиотеки и откройте класс APKExpansionPolicy. Если у вас есть ошибки и импорт орг.апаш.http.NameValuePair и организация импорта.апаш.http.клиент.а utils.URLEncodedUtils бледно-серые, откройте сборку.gradle (Project:whatever) и убедитесь, что в «buildscript» в разделе «зависимости» у вас есть «classpath» com.андроид.инструменты.сборка: gradle: 1.5.0 » включено. 1.5.0 может отличаться в вашем случае. Я думаю, это зависит от вашей студийной версии. Моя 1.5.1. Если ваш новее, вам напомнят, чтобы обновить номера.
после этого перейдите в раздел » build.gradle (модуль: библиотека) и включает «useLibrary» org.апаш.http.наследие «в раздел «android». Синхронизация теперь (верхний угол R/H) должна быть предложена. Сделать его.
Если вы получите дополнительные сообщения об ошибках (я бы не знал, потому что я сделал это наоборот), файлы Apache могут отсутствовать в вашем проекте, так как apache больше не поддерживается. Найдите их в C/D:пользователи/Yourname/AppData/Local/Android/Sdk/platforms/android-23/необязательно и скопируйте/вставьте их в папку yourproject/app / libs. У вас должна быть опция.json и организация.апаш.http.наследие.jar-файл туда. Возможно, вам лучше перейти на веб-сайт apache и загрузить новейшую версию:http://hc.apache.org/downloads.cgi распакуйте его в любом месте, откройте его, перейдите в «lib», скопируйте httpclient-4.5.1.jar файл и замените орг.апаш.http.наследие.jar-файл с его помощью.
синхронизация и перестроить / очистить проект, и это должно быть хорошо идти.
на всякий случай откройте терминал (L / H внизу Android Studio) и введите «gradlew clean». Он установит несколько вещей. Как только это будет сделано, введите «gradlew assemble». На это потребуется несколько минут, чтобы закончить, но это даст вам ошибки, если они у вас есть конечно. Если вы не можете ввести что-либо в терминале, Запустите командную строку (кнопка Windows+R), введите cmd, нажмите OK, щелкните правой кнопкой мыши на название маленького черного всплывающего экрана (C:\WINDOWS\system32\cmd — . exe), свойства, параметры, в нижней части окна проверьте, что» использовать устаревшую консоль » утолщена. Перезапуск Студии.
мне пришлось опубликовать, поскольку ни один из вышеперечисленных ответов не работал полностью для меня.
Я использую Android Studio
Шаг 2: скопируйте и вставьте .файл jar в папку libs (создать, если еще не существует) в вашем модуле (может быть приложение или библиотека)
Шаг 3: щелкните правой кнопкой мыши на банке и «Добавить как библиотеку». Он автоматически добавит файл jar в качестве зависимости в файл gradle вашего модуля
Шаг 4: теперь автоматически ваша проблема будет решена, но если вы используете proguard в своем приложении, это даст вам предупреждение о дубликатах файлов классов и не позволит вам строить. Это известная ошибка, и вам нужно добавить следующее К вашим proguard-rules
в моем случае я обновил одну из своих библиотек в своем проекте android.
Я использую резервуар в качестве решения для хранения кэша:https://github.com/anupcowkur/Reservoir
автор библиотеки должен был удалить библиотеку commons-io из репо, чтобы мое приложение больше не работало.
мне пришлось вручную включить commons-io, добавив Это на Gradle в:
Источник
Apache HttpClient Android (Gradle)
Я добавил эту строку в свой build.gradle
и я хочу использовать MultipartEntityBuilder в своем коде. Однако Android studio не добавляет библиотеку в мой код. Кто-нибудь может мне помочь?
8 ответов
Для Apache HttpClient, когда я аутентифицируюсь на веб-странице, нужно ли мне устанавливать параметры для полей ввода hidden? И еще — кто-нибудь когда-нибудь заставлял HtmlUnit работать над android?
Кто-нибудь пробовал использовать более новую версию Apache HttpClient на Android? В HttpClient, используемом Android, есть досадная ошибка, и мне было интересно, не возникнут ли у меня проблемы при попытке перераспределить HttpClient 4.1 с помощью моего приложения.
если вы используете цель sdk в качестве 23, добавьте код ниже в свой build.gradle
дополнительное примечание здесь: не пытайтесь использовать версии gradle этих файлов. они сломаны (28.08.15). Я пытался более 5 часов, чтобы заставить его работать. это просто не так. не работает:
еще одна вещь не используйте:
его уровень 21 api.
Принятый ответ кажется мне не совсем правильным. Нет смысла перетаскивать другую версию HttpMime, когда можно зависеть от одной и той же версии.
Никто из остальных на меня не работал. Мне пришлось добавить следующую зависимость, как описано здесь
потому что я нацелился на API 23.
Попробуйте добавить это в свои зависимости:
И вообще, если вы хотите использовать библиотеку и ищете строку зависимости Gradle, вы можете использовать Gradle , пожалуйста
EDIT: Проверьте и это тоже.
Я решил проблему, добавив следующее в свой файл build.gradle
Однако это работает только в том случае, если вы используете gradle 1.3.0-beta2 или выше, поэтому вам придется добавить это в зависимости buildscript, если вы используете более низкую версию:
Я искал снова и снова, это решение работает как шарм ::
Я уже разработал настольное приложение с использованием Java, и теперь мне нужно разработать то же самое приложение для Android. В моем приложении java я использовал библиотеку httpclient из apache для выполнения всех транзакций http, мой вопрос: Могу ли я использовать тот же класс HttpUtil.
Какая версия Apache HttpClient используется в Android 4.2.2 SDK? Я проверил https:/ / code.google.com/p / httpclientandroidlib/ , но это не кажется правильным, причина в том, что класс AuthCache должен быть в Android 4.2.2 SDK, если он использует последнюю версию HttpClient.
Я не знаю, почему, но (на данный момент) httpclient может быть скомпилирован только как jar в каталог libs в вашем проекте. HttpCore отлично работает, когда он включен из mvn, как это:
Рабочая gradle зависимость
Похожие вопросы:
Я пытаюсь преобразовать проект IntelliJ в систему Gradle из Android Studio, но я сталкиваюсь с ошибками с Apache HttpClient? Если я что-то упускаю, то ошибки, которые я получаю, заключаются в.
Android SDK 4.0.3 в настоящее время упаковывает библиотеку Apache HttpClient 4.1.1. Мне нужно использовать некоторые функции, которые есть только в последнем HttpClient 4.1.3. — Есть ли способ.
Я пытаюсь использовать Apache httpclient для Android в своем проекте Gradle и не понимаю, почему я получаю эту ошибку при запуске ./gradle build : Не удалось найти.
Для Apache HttpClient, когда я аутентифицируюсь на веб-странице, нужно ли мне устанавливать параметры для полей ввода hidden? И еще — кто-нибудь когда-нибудь заставлял HtmlUnit работать над android?
Кто-нибудь пробовал использовать более новую версию Apache HttpClient на Android? В HttpClient, используемом Android, есть досадная ошибка, и мне было интересно, не возникнут ли у меня проблемы при.
Я уже разработал настольное приложение с использованием Java, и теперь мне нужно разработать то же самое приложение для Android. В моем приложении java я использовал библиотеку httpclient из apache.
Какая версия Apache HttpClient используется в Android 4.2.2 SDK? Я проверил https:/ / code.google.com/p / httpclientandroidlib/ , но это не кажется правильным, причина в том, что класс AuthCache.
Кто-нибудь заставлял Apache HttpClient 4.3 работать над Android 4.4? Независимо от того, в каком порядке я экспортирую банки apache в eclipse, устройство использует версию Apache HttpClient, которая.
Я добавил HttpClient 4.3.3 для android в свой файл build.gradle, как описано в Apache , но мое приложение не изменилось в размере. Из-за этого я почти уверен, что, хотя мой IDE показывает.
Я столкнулся с проблемой зависимости HttpClient с Gradle 1.3.0 и Android Studio 1.3.2. С приведенным ниже файлом gradle следующие пакеты, входящие в состав библиотеки Httpclient, не разрешаются.
Источник