- Сделать POST-запрос к Api в Android Studio
- Android. GET и POST запросы к web серверу
- Подготовка
- Работа с GET запросом
- Работа с POST запросом
- Рекомендуемые
- Комментарии
- Как отправить POST запрос с помощью HttpURLConnection?
- Отправка POST-данных в Android
- Gamedev suffering
- Блог о разработке игр и серверных технологиях
- Android: послать GET/POST запрос с помощью AsyncTask
- JSONParser
- AsyncTask
Сделать POST-запрос к Api в Android Studio
Я пытаюсь сделать запрос POST для API, который я создал в Visual Studio. API работает, и мне наконец-то удалось найти код, который позволяет мне подключаться к нему (и это не рекомендуется). Проблема в том, что этот код был создан для запроса GET, а мне нужно сделать POST. Я создал два блока, в которые вставляю данные, которые хочу передать (utente, пароль), и создал кнопку, которая берет данные из boxex и преобразует их в строку.
Я уже пробовал искать множество примеров и руководств, которые показывают, как сделать запрос POST, но большинство из них очень старые и больше не работают в Android Studio, или, по крайней мере, я не могу заставить их работать.
Теперь, это функция, которая должна отправлять данные, я не касался кода, так как не знаю, что изменить, кроме метода запроса.
Может кто-нибудь объяснить мне, как взять данные и отправить их как объект JSON, который имеет
Ключи = пользователь, пароль
Values = utente, password (значения взяты из двух упомянутых выше полей)
Спасибо всем, кто хочет помочь мне, и я надеюсь, что обращение за такой большой помощью не противоречит правилам сайта.
Я использую Волей, так как это не так сложно и потому что, кажется, работает.
Используя метод GET, он показывает, что существующий json с сообщением не может быть преобразован в объект JSON (мне все равно, это просто подтверждение того, что он подключается к API)
Используя метод POST, он выдает ErrorResponse в конце (источник еды не отвечает)
РЕДАКТИРОВАТЬ: добавлен метод OnCreate, поскольку мне нужно возвращение StringRequest
РЕДАКТИРОВАТЬ. Я следовал предложенному ответу, но он не работает .
Полученный код показан ниже, но я получаю OnErrorResponse, я не думаю, что это проблема с API, потому что при попытке получить ответ GET он дает мне выходной массив json, поэтому я думаю, что это проблема с кодом.
Источник
Android. GET и POST запросы к web серверу
5 сентября 2016 г. 3 Yehor Rykhnov 12673 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 запрос с помощью HttpURLConnection?
Добрый вечер. Начал разбираться в программировании под android и нашел много поднобных инструкций по отправке POST запроса на php сервер с помощью HttpClient, но потом выяснил что он устарел и перестал поддерживаться последим SDK который у меня установлен.
После чего узнал что следует пользоваться HttpURLConnection, но информации о том как осуществить с помощью него POST или GET запросы и обработать ответ от сервера не нашел.
Надеюсь на вашу помощь, желательно с подробными примерами. Огромное спасибо.
- Вопрос задан более трёх лет назад
- 36845 просмотров
Оценить 2 комментария
Минимум как-то так. А там сами обработаете что и как требуется и положено.
Особого отличия от HttpClient нет.
По сути нужно заполнить OutputStream дополнительно к текстовым параметрам формы еще и бинарными данными.
Вот какой-то пример есть: Upload a file using HTTPUrlConnection.
Рекомендую сначала настроить свой php и убедиться, что все работает при отправке файла через HTML-форму. Потом уже пробовать свой java-клиент. Для начала пробуйте мелкие бинарники передавать.
Смотрите, чтобы сервер ваш не согласился на прием файла очень большого размера, который ему просто некуда будет сохранить, т.е. нужно ограничение по размеру принимаемого файла. Или прием данных нежелательного содержания, например, какой-либо исполняемый код. Ну, это уже все другие вопросы.
Для отладки выводите лог и обрабатывайте ошибки буквально после каждого действия на клиенте и на сервере.
Источник
Отправка 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 работают медленнее, чем библиотеки. Также библиотека будет загружать все и быстрее.
Источник
Gamedev suffering
Блог о разработке игр и серверных технологиях
Android: послать GET/POST запрос с помощью AsyncTask
Чтобы в приложении выполнять тяжелые задачи можно вводить отдельный поток и использовать Handler для обратной связи и обновления экрана. Для решения подобных задач сделали отдельный класс – AsyncTask. Т.е. его цель – это выполнение тяжелых задач и передача в UI-поток результатов работы. При этом нам не надо задумываться о создании Handler и нового потока. Для отправки запросов вроде как тоже рекомендуется использовать AsyncTask.
JSONParser
Данные с сервера частенько отправляют в формате JSON. Поэтому, можно воспользоваться классом для отправки запросов в json формате. Код нашёл на просторах http://stackoverflow.com
AsyncTask
Чтобы работать с AsyncTask , необходимо создать класс-наследник и в нём переопределить необходимые методы: doInBackground – будет выполнен в новом потоке, здесь решаем все свои задачи onPreExecute – выполняется перед doInBackground, имеет доступ к UI onPostExecute – выполняется после doInBackground (не срабатывает в случае, если AsyncTask был отменен), имеет доступ к UI
При описании класса-наследника AsyncTask мы в угловых скобках указываем три типа данных:
- Тип входных данных. Это данные, которые пойдут на вход AsyncTask.
- Тип промежуточных данных. Данные, которые используются для вывода промежуточных результатов.
- Тип возвращаемых данных. То, что вернет AsyncTask после работы.
Весь класс будет выглядеть примерно так:
Ну и само использование:
На сервере для нашего случая в php у нас к примеру (параметр «result» мы и пытаемся на клиенте получить):
Источник