- SELECT * FROM Vzakladke.net
- Простой пример отправки данных формы POST-запросом на Android
- Android. GET и POST запросы к web серверу
- Подготовка
- Работа с GET запросом
- Работа с POST запросом
- Рекомендуемые
- Комментарии
- Как отправить POST запрос в JSON, используя HTTPClient в Android?
- О компании JSON
- О HttpClient Запрос
- Карта
- Обновление
- Отправка POST-данных в Android
- Как отправить POST запрос с помощью HttpURLConnection?
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 12698 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 запрос в JSON, используя HTTPClient в Android?
Я пытаюсь выяснить, как POST JSON из Android с помощью HTTPClient. Я пытался понять это некоторое время, я нашел много примеров в Интернете, но я не могу заставить их работать. Я считаю, что это из-за моего отсутствия знаний JSON/сетей в целом. Я знаю, что существует множество примеров, но кто-то может указать мне на настоящий учебник? Я ищу пошаговый процесс с кодом и объяснением того, почему вы делаете каждый шаг или что делает этот шаг. Это не должно быть сложным, достаточно будет простого.
Опять же, я знаю, что есть масса примеров, я просто ищу пример с объяснением того, что именно происходит и почему так происходит.
Если кто-то знает о хорошей Android книге по этому вопросу, пожалуйста, дайте мне знать.
Еще раз спасибо за помощь @terrance, вот код, который я описал ниже
О компании JSON
JSON означает JavaScript Object Notation. В свойствах JavaScript можно ссылаться как object1.name , так и object[‘name’]; . Пример из статьи использует этот бит JSON.
Детали
Объект вентилятора с адресом электронной почты в качестве ключа и значением [email protected]
Таким образом, эквивалент объекта будет fan.email; или fan[’email’]; . Оба будут иметь одинаковое значение ‘[email protected]’ .
О HttpClient Запрос
Вот что наш автор использовал для HttpClient Request . Я не претендую на то, чтобы быть экспертом во всем этом, поэтому, если у кого-то есть лучший способ Word, некоторые терминологии не стесняйтесь.
Карта
Если вы не знакомы со структурой данных Map , обратите внимание на ссылка на карту Java . Короче говоря, карта похожа на словарь или хэш.
Пожалуйста, не стесняйтесь комментировать любые вопросы, которые возникают в связи с этим сообщением, или если я не разъяснил что-либо, или если я не затронул то, о чем вы все еще не понимаете . и т.д., что бы ни возникало у вас в голове.
(Я снесу, если Джастин Грамменс не одобрит. Но если нет, то спасибо Джастину за то, что он был крут.)
Обновление
Я просто случайно получил комментарий о том, как использовать код, и понял, что в возвращаемом типе была ошибка. Сигнатура метода была настроена так, чтобы возвращать строку, но в этом случае она ничего не возвращала. Я изменил подпись на HttpResponse и отсылаю вас по этой ссылке на Получение тела ответа HttpResponse переменная пути — это URL, и я обновил ее, чтобы исправить ошибку в коде.
Вот альтернативное решение для ответа @ Terrance. Вы можете легко перенести конвертацию. библиотека Gson прекрасно справляется с преобразованием различных структур данных в JSON и наоборот.
Подобное можно сделать, используя Джексон вместо Gson. Я также рекомендую взглянуть на Retrofit , который скрывает для вас много этого стандартного кода. Для более опытных разработчиков я рекомендую попробовать RxAndroid .
Я рекомендую использовать это HttpURLConnection вместо HttpGet . Поскольку HttpGet уже устарело в Android уровне API 22.
Слишком много кода для этой задачи, проверьте эту библиотеку https://github.com/kodart/Httpzoid Is использует GSON внутри и предоставляет API, который работает с объектами. Все детали JSON скрыты.
Есть несколько способов установить соединение HHTP и извлечь данные из веб-службы RESTFULL. Самый последний — GSON. Но прежде чем перейти к GSON, вы должны иметь представление о наиболее традиционном способе создания HTTP-клиента и выполнения обмена данными с удаленным сервером. Я упомянул оба метода для отправки POST & GET запросов с использованием HTTPClient.
Источник
Отправка 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
Используйте лучшую библиотеку, такую как:
- Избегайте HttpUrlConnection и HttpClient
На более низких уровнях API (в основном на Gingerbread и Froyo) HttpUrlConnection и HttpClient далеки от совершенства
- И избегайте AsyncTask слишком
- Они намного быстрее
- Они все кешируют
С момента появления 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 работают медленнее, чем библиотеки. Также библиотека будет загружать все и быстрее.
Источник
Как отправить POST запрос с помощью HttpURLConnection?
Добрый вечер. Начал разбираться в программировании под android и нашел много поднобных инструкций по отправке POST запроса на php сервер с помощью HttpClient, но потом выяснил что он устарел и перестал поддерживаться последим SDK который у меня установлен.
После чего узнал что следует пользоваться HttpURLConnection, но информации о том как осуществить с помощью него POST или GET запросы и обработать ответ от сервера не нашел.
Надеюсь на вашу помощь, желательно с подробными примерами. Огромное спасибо.
- Вопрос задан более трёх лет назад
- 36846 просмотров
Оценить 2 комментария
Минимум как-то так. А там сами обработаете что и как требуется и положено.
Особого отличия от HttpClient нет.
По сути нужно заполнить OutputStream дополнительно к текстовым параметрам формы еще и бинарными данными.
Вот какой-то пример есть: Upload a file using HTTPUrlConnection.
Рекомендую сначала настроить свой php и убедиться, что все работает при отправке файла через HTML-форму. Потом уже пробовать свой java-клиент. Для начала пробуйте мелкие бинарники передавать.
Смотрите, чтобы сервер ваш не согласился на прием файла очень большого размера, который ему просто некуда будет сохранить, т.е. нужно ограничение по размеру принимаемого файла. Или прием данных нежелательного содержания, например, какой-либо исполняемый код. Ну, это уже все другие вопросы.
Для отладки выводите лог и обрабатывайте ошибки буквально после каждого действия на клиенте и на сервере.
Источник