Отправка post запроса android studio

Сделать 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 12684 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»

Читайте также:  Смартфон samsung с андроидом

Если хотим тестить на локальном сервере — обращаемся к локальному хосту по ip. К хосту привязываем ip сетевой карты.

Источник

Отправка 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 работают медленнее, чем библиотеки. Также библиотека будет загружать все и быстрее.

Источник

Android HTTP requests made easy

If you’ve ever had to make an HTTP network request in Android, you know what a pain it can be. Making Android HTTP requests usually involves writing a lot of boilerplate code. You could make things a bit easier by creating some custom classes, but it can still be tedious.

In this tutorial I will show you how to make network requests using two different methods. The first method involves creating custom classes, which will aid in code reusability. The second method involves adding a library called the Android Asynchronous Http Client by loopj. This library will greatly reduce the amount of code you will need to write.

In addition, we will be making a network request to the BitcoinAverage API which returns a JSON string. You will learn how to handle the JSON string, both with and without the use of the Android Asynchronous Http Client library.

This tutorial is for those who:

  • are comfortable with the Android development environment;
  • want to learn an easier way to make HTTP requests in Android.

Note: you should also be comfortable with Java and how Object-Orientation works in Java.

Adding permissions

This step is relevant to both methods. Navigate to your AndroidManifiest.xml file and add the following permission before the tag:

Method 1: Creating custom classes

The first class we will be creating is called the RequestPackage class. This class will accept three important values when making HTTP requests. First, it will receive the URL. Next, it will receive the request method (POST or GET). Last, it will receive any values that the server might need (e.g. product_id). The request package will then be sent to the HttpManager class that we will create later.

Create a class called RequestPackage and add the following code to the class:

HttpManager

Next, we will create the HttpManager class. As mentioned earlier, the HttpManager receives the RequestPackage that we created in the previous section. The HttpManager is responsible for making the actual request and receiving the response from the server.

Create a class called HttpManager and add the following code to it:

Putting it all together

Finally, we can use the code we just implemented. Here we will be putting everything together within the MainActivity. We will have to create a private class within the MainActivity and we will call it Downloader.

The Downloader class is an AsyncTask, which is required when making network requests in Android. If you try to make network requests outside an AsyncTask, your UI will freeze until it gets the HTTP response from the server.

Create an activity called MainActivity and add the following code:

And we are done. The amount of code we needed to write in order to get those three small pieces of information is a lot. It gets even worse if you want to use something like a RecyclerView. That would involve creating an adapter, which would significantly increase the amount of code we need to write.

Читайте также:  Какая самая лучшая клавиатура для андроид

In the next section, I will show you how to do the same thing by making use of the Android Asynchronous Http Client.

Method 2: Android Asynchronous HTTP Client

Navigate to the app/build.gradle file and enter the code below in the dependencies section:

Android Studio will ask if you would like to sync your project. You should do this and the dependencies will be downloaded.

Creating the MainActivity

Next, you will need to add the code below to the MainActivity:

Run your app and, voila, you’re done.

Conclusion

Well done! You have completed this tutorial. As you can see, the amount of code needed when working with the Android Asynchronous Http Client is far less than making HTTP requests using no library.

You now have a choice to make: do you prefer method 1 or method 2?

To find out more about the Android Asynchronous Http Client, please visit: http://loopj.com/android-async-http/

To view and/or clone a similar project to the one in this tutorial – that also uses the Android Asynchronous Http Client – please visit: https://github.com/londonappbrewery/bitcoin-ticker-android-citispy

To find out more about the BitcoinAverage API, please visit: https://bitcoinaverage.com/

Find out more about our Certified Mobile Developer Bootcamp. You will cover the following modules: Java Programming Essentials, Introduction to Mobile Development and Advanced Mobile Developer.

This article was contributed by Yusuf Isaacs.

Editor’s note: This was post was originally published November 14th, 2017 and has been updated February 18th, 2019.

Источник

Как отправить POST запрос с помощью HttpURLConnection?

Добрый вечер. Начал разбираться в программировании под android и нашел много поднобных инструкций по отправке POST запроса на php сервер с помощью HttpClient, но потом выяснил что он устарел и перестал поддерживаться последим SDK который у меня установлен.

После чего узнал что следует пользоваться HttpURLConnection, но информации о том как осуществить с помощью него POST или GET запросы и обработать ответ от сервера не нашел.

Надеюсь на вашу помощь, желательно с подробными примерами. Огромное спасибо.

  • Вопрос задан более трёх лет назад
  • 36845 просмотров

Оценить 2 комментария

Минимум как-то так. А там сами обработаете что и как требуется и положено.

Особого отличия от HttpClient нет.

По сути нужно заполнить OutputStream дополнительно к текстовым параметрам формы еще и бинарными данными.
Вот какой-то пример есть: Upload a file using HTTPUrlConnection.

Рекомендую сначала настроить свой php и убедиться, что все работает при отправке файла через HTML-форму. Потом уже пробовать свой java-клиент. Для начала пробуйте мелкие бинарники передавать.
Смотрите, чтобы сервер ваш не согласился на прием файла очень большого размера, который ему просто некуда будет сохранить, т.е. нужно ограничение по размеру принимаемого файла. Или прием данных нежелательного содержания, например, какой-либо исполняемый код. Ну, это уже все другие вопросы.

Для отладки выводите лог и обрабатывайте ошибки буквально после каждого действия на клиенте и на сервере.

Источник

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