- SELECT * FROM Vzakladke.net
- Простой пример отправки данных формы POST-запросом на Android
- Android. GET и POST запросы к web серверу
- Подготовка
- Работа с GET запросом
- Работа с POST запросом
- Рекомендуемые
- Комментарии
- Какую библиотеку работы с HTTP в Android выбрать?
- Для чего это вообще?
- Немного истории
- Отправка POST-данных в Android
SELECT * FROM Vzakladke.net
Статьи об автоматизации и программировании
Простой пример отправки данных формы POST-запросом на Android
Отправка данных формы через Андроид не так сложна, как может показаться это на первый взгляд. У многих начинающих могут возникнуть проблемы с тем, что приложение падает после вызова функции отправки сообщения, так как в сети очень распространены примеры, которые не являются рабочими. Основная причина многих ошибок в том, что люди забывают, что для Андроид приложения нужен асинхронный метод отправки данных через AsyncTask.
Предлагаю рассмотреть вариант с отправкой данных из приложения на Android с данными из двух полей на заранее подготовленный сервер, где будет обрабатываться наш запрос. Для начала необходимо воссоздать макет страницы. Пусть кнопка отправки сообщений будет вверху, нам так удобнее при работе с приложением, и добавим два поля EditText и один ProgressBar (который в приложении при загрузке сначала должен быть невидимым, я укажу это в коде активити).
Теперь нарисуем разметку activity_main.xml:
После того как мы добавили разметку нашему приложению хотелось бы сразу оговорить и права доступа приложения к интернету, иначе понятно что ничего работать не будет. Поэтому сразу после блока добавим разрешение нашему приложению:
Дальше нам понадобится модуль apache. Так как программа разрабатывалась в Eclipse ADT — проблем с поиском этого модуля не было. Сначала пропишем все необходимые модули для нашего приложения:
Теперь рассмотрим JAVA код нашего приложения в MainActivity.java, которое по нашей задумке должно отправлять данные на сервер.
Первое что необходимо выделить отдельно, так это наши переменные связанные с серверной стороной, поскольку так будет легче в будущем контролировать код на клиенте и на сервере в случае необходимости проведения каких то изменений, например SERVER_URL — это адрес нашего скрипта на сервере, SERVER_TITLE — это заголовок нашей статьи и SERVER_MESSAGE — текст нашей статьи, который мы будем «постить» через форму из Андроид-приложения. Далее по коду мы в методе doInBackground сделаем вызов нашей функции асинхронной отправки данных на сервер и в методе onPostExecute оставим уведомление о том, что информация была направлена после нажатия кнопки отправки и очистим нашу форму.
Считайте, что бонусом здесь указана кнопка закрытия для окна нашего приложения, поэтому в res/values/strings.xml добавим нашу переменную с обозначением нашей кнопки:
и разметка самого меню будет выглядеть таким образом, где android:showAsAction=»always|withText» скажет нашему приложению чтобы кнопка отображалась как текст, а не в выпадающем списке.
Чтобы принять это сообщение на стороне сервера в качестве примера приведем php-скрипт, в первом варианте для сохранения в базе данных:
Другой вариант — сохранение в файл submittedmsg.html, выбирайте какой Вам способ больше нравится для теста.
Дата публикации: 2016-07-12 09:57:23
Источник
Android. GET и POST запросы к web серверу
5 сентября 2016 г. 3 Yehor Rykhnov 12688 android, java—>
Довольно часто приложению необходимо обмениваться информацией с сервером, для этого используется HTTP или HTTPS протокол. Рассмотрим простой пример запроса к серверу и получение ответа от него.
Запросы к web серверу нужно выполнять в отдельном потоке.
Подготовка
Установим в манифесте разрешение на работу с интернетом:
Работа с GET запросом
Для передачи спец символов (например: !»№;%?()) необходимо их преобразовать с помощью URLEncoder:
Работа с POST запросом
Если у вас есть вопросы или предложения по улучшению кода описанного в статье пишите в комментариях.
Я всегда открыт к конструктивному диалогу
Рекомендуемые
Комментарии
Для того, чтобы работал DefaultHttpClient — нужно установить бибилотеку apache.http. Для этого, в Android Studio:
1. Открываем Build->Edit Libraries and Dependencies->Dependencies.
2. Нажимаем на плюсик (+)
3. Выбираем Library Dependency
4. В поле поиска пишем org.apache.http и нажимаем «Enter» или жмем на кнопку поиска
Должно найти библиотеку org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2
5. Выбираем ее.
6. Жмем «Ok»
Если хотим тестить на локальном сервере — обращаемся к локальному хосту по ip. К хосту привязываем ip сетевой карты.
Подскажите плиз, как написать POST для https?
Бесполезно придумывать защиту от дурака — ведь дураки так гениальны
кодер.укр
Мы публикуем полезные материалы для веб разработчика с подробным описанием без лишней «воды», с рабочими (проверенными) примерами.
Основная наша задача — это донести материалы максимально просто и понятно до читателя.
Вы можете связаться с нами по э-почте: info@кодер.укр
или с помощью формы обратной связи
Семён • 3 июля 2021 г., 1:39 Вопрос .Как сделать так , чтобы в tor браузер был постоянный ip адрес ..У меня проблема в. Как изменить размер шрифта текста, чтоб был больше 5ти? |
Dmentiy • 19 мая 2021 г., 13:15 Спасибо за мануал, наконец то руки дошли до авторизации. В миграцию добавил пользователя п. Подпишитесь на рассылку и Вы будете получать новые статьи первым. Copyright © 2014 — 2021 by кодер.укр. All Rights Reserved. Источник Какую библиотеку работы с HTTP в Android выбрать?Представляю вашему вниманию перевод статьи «Which Android HTTP library to use?». Для чего это вообще?Немного истории
Даже сегодня, если вы загляните в исходники 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 поставляется со следующим огромным набором функций:
Моя самая любимая часть OkHttp – как красиво и аккуратно можно работать с асинхронными запросами: Это очень удобно, так как работа с сетью не должна быть в UI потоке. По-факту, начиная с Android 3.0 (Honeycomb, API 11), работа с сетью в отдельном потоке стала обязательной. Для того, чтобы воплотить что-то похожее с HtttpUrlConnection, вам потребуется построить большую (а может и монструозную) конструкцию с использованием AsyncTask или отдельного потока. Это будет еще более сложным, если вы захотите добавить отмену загрузки, объединение соединений и т.п. Кстати, не осталась у обочины и HTTP библиотека от Google под названием Volley, которая предоставляет нам следующие бонусы:
Все, что ни есть в 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. Не прошло много времени, как появились библиотеки, решающие эти задачи:
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 от нас. Источник Отправка POST-данных в AndroidУ меня есть опыт работы с PHP, JavaScript и многими другими языками сценариев, но у меня нет большого опыта работы с Java или Android. Я ищу способ отправки данных POST в скрипт PHP и отображения результатов. * Обновленный ответ, который работает на Android 6.0+. Спасибо @Rohit Suthar , @Tamis Bolvari и @sudhiskr за комментарии. * Старый ответ Примечание: это решение устарело. Работает только на устройствах Android до 5.1. Android 6.0 и выше не включают в себя HTTP-клиент Apache, используемый в этом ответе. Http Client от Apache Commons — это путь. Он уже включен в Android. Вот простой пример того, как сделать HTTP Post используя его. для Android => 5 В org.apache.http классы и AndroidHttpClient класса были устаревшими в Android 5.1 . Эти классы больше не поддерживаются, и вы должны как можно скорее перенести любой код приложения с помощью этих API в классы URLConnection . Мысль поделиться своим кодом с помощью HttpUrlConnection Также вы можете опубликовать метод: Обновление 21/02/2016 для отправки запроса с помощью json , см. этот пример: ОБНОВЛЕНИЕ 24/08/2016 Используйте лучшую библиотеку, такую как:
На более низких уровнях API (в основном на Gingerbread и Froyo) HttpUrlConnection и HttpClient далеки от совершенства
С момента появления Honeycomb (API 11) было обязательным выполнять сетевые операции в отдельном потоке, отличном от основного потока Таким образом, мы можем отправлять данные методом http post и получать результат Это пример того, как размещать данные из нескольких частей БЕЗ использования внешних библиотек Apache: к @primpop answer я бы добавил, как преобразовать ответ в строку: Лучше использовать Apache Commons HttpClient, который также включен в Android. Посмотрите на Android Developer: Apache HTTP Client Package для получения общей информации о API. Вы можете использовать это для отправки HTTP-запроса POST на URL. Вы можете легко отправить запрос и получить ответ. Я всегда использую это. Я хорошо работаю со мной. Вы также должны добавить ниже файл Jar в папке libs Наконец отредактируйте свой build.gradle В последнем перестрой свой проект. Используйте okHttp библиотеку с открытым исходным кодом от Square. okHttp работает с Android 2.3 и выше и имеет лицензию Apache 2.0 на GitHub . Отправка данных POST так же проста, как добавление следующего в AsyncTask: okHttp также есть пространство имен на maven, поэтому добавить его в проект Android Studio очень просто. Просто добавьте compile ‘com.squareup.okhttp3:okhttp:3.11.0’ в свое приложение build.gradle. Полный код Добавьте в свою деятельность следующее: И назовите это используя: У меня работает следующее: Вы можете использовать URLConnection с , (для отправки данных) и (для получения). У Sun есть пример именно для этого . setDoOutput (true) getOutputStream() getInputStream() Если вы просто хотите добавить данные в URL-адрес, вы можете сделать это с помощью HttpUrlConnection, так как теперь HttpClient устарел. Лучшим способом было бы использовать библиотеку как Залп модернизации Мы можем публиковать данные в php-скрипте, извлекать результаты и отображать их, используя этот код, выполняемый через класс AsyncTask. Но использование таких библиотек, как volley или retrofit, гораздо лучше, потому что класс Asynctask и HttpurlConnection работают медленнее, чем библиотеки. Также библиотека будет загружать все и быстрее. Источник |