- Отправляем GET запрос в Android без Apache
- Сделайте HTTP-запрос с android
- 11 ответов
- обновление
- Оригинальный Ответ
- Android. GET и POST запросы к web серверу
- Подготовка
- Работа с GET запросом
- Работа с POST запросом
- Рекомендуемые
- Комментарии
- Android HTTP requests made easy
- Adding permissions
- Method 1: Creating custom classes
- HttpManager
- Putting it all together
- Method 2: Android Asynchronous HTTP Client
- Creating the MainActivity
- Conclusion
- Build Your First PHP for Android Application
Отправляем GET запрос в Android без Apache
Когда заходит разговор о работе с HTTP под Android чаще всего сразу же вспоминают библиотеку классов от Apache. При этом незаслуженно игнорируя другой не менее эффективный способ обмена данными.
Этот способ по праву можно считать если не очевидным, то, по крайней мере, хорошо известным для тех, кто программирует на Java. Однако в среде Android разработчиков он пока почему-то не получил широкого распространения.
Речь идёт о пакете java.net, который входит в состав «обычного» Java SE, но доступен также и в Android.
Для отправки запроса потребуется всего два класса из этого пакета URL и HttpURLConnection.
Вначале создадим подключение к тому ресурсу, к которому планируется оправить запрос. Для этого создадим объект класса URL и на его основе получим объект класса HttpURLConnection.
Затем собственно отправляем сам запрос и обрабатываем результат:
В чём преимущество java.net перед Apache?
- Это стандартный пакетJava.
Для его использования не требуется устанавливать или подключать каких-либо сторонних библиотек. А, писать программы с его использованием можно практически «не оглядываясь» на версию Android; - Больше возможностей контролировать процесс обмена данными.
В частности, можно без труда анализировать ответ сервера, что часто требуется при работе с RestAPI; - Более простая и компактная реализация программ для работы сHTTP.
Для того чтобы отправить даже простой запрос в библиотеке от Apache требуется работа с тремя объектами. В java.net всё сводится, по сути, к одному HttpURLConnection. При этом без ущерба для архитектуры приложения; - JavaSE и, в частности,java.net превосходно документированы.
К сожалению, этого нельзя сказать о библиотеке от Apache. Документация по ней представлена только в виде примеров, которые уже не актуальны для более новых версий.
Последнее преимущество обычно принято как-то сбрасывать со счетов. Однако про него почему-то столь же часто вспоминают, когда дело доходит до сложных или просто не тривиальных задач и все остальные способы разобраться в проблеме исчерпаны. О том насколько влияет наличие и качество документации на возможность освоения для новичков, и говорить не приходится.
Из недостатков рассматриваемого способа можно отметить только один. HttpURLConnection позволяет получить данные только в виде набора байт. Поэтому, чтобы получить ответ с сервера в виде строки требуется выполнить преобразования.
Источник
Сделайте HTTP-запрос с android
Я искал везде но не мог найти ответа, есть ли способ сделать простой HTTP-запрос? Я хочу запросить PHP-страницу / скрипт на одном из моих сайтов, но я не хочу показывать веб-страницу.
Если возможно, я даже хочу сделать это в фоновом режиме (в BroadcastReceiver)
11 ответов
обновление
это очень старый ответ. Я определенно больше не буду рекомендовать клиента Apache. Вместо этого используйте либо:
Оригинальный Ответ
прежде всего, запросите разрешение на доступ к сети, добавьте в манифест следующее:
тогда самый простой способ-использовать http-клиент Apache в комплекте с Android:
если вы хотите, чтобы он работал в отдельном потоке, я бы рекомендовал расширить AsyncTask:
затем вы можете сделать запрос по:
Если у вас нет явной причины выбрать Apache HttpClient, вы должны предпочесть java.сеть.URLConnection. вы можете найти множество примеров того, как использовать его в интернете.
мы также улучшили документацию Android с момента вашего первоначального сообщения:http://developer.android.com/reference/java/net/HttpURLConnection.html
Примечание: HTTP-клиент Apache в комплекте с Android теперь устарел в пользу HttpURLConnection. Пожалуйста, смотрите Android разработчиков блог для получения более подробной информации.
добавить к вашему манифесту.
затем вы получите веб-страницу следующим образом:
Я также предлагаю запустить его в отдельном потоке:
посмотреть документация для получения дополнительной информации об обработке ответов и POST запросы.
самый простой способ-использовать Android lib под названием волейбол
Volley предлагает следующие преимущества:
автоматическое планирование сетевых запросов. несколько параллельных сети соединения. Прозрачный диск и кэширование ответа памяти c стандартная согласованность кэша HTTP. Поддержка приоритизации запросов. API запроса на отмену. Вы можете отменить один запрос, или вы можете установить блоки или области запросы на отмену. Простота настройки для например, для retry и backoff. Сильный заказ, что позволяет легко правильно заполнить интерфейса извлечена данные асинхронно с сеть. Инструменты отладки и трассировки.
вы можете отправить запрос http / https так просто:
в этом случае вам не нужно рассматривать «запуск в фоновом режиме» или «использование кэша», поскольку все это уже было сделано Volley.
Источник
Android. GET и POST запросы к web серверу
5 сентября 2016 г. 3 Yehor Rykhnov 12674 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?
Источник
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.
Источник
Build Your First PHP for Android Application
Операционная система Android повергла рынок сматрфонов в шок :). В отличии от компании Apple, которая предъявляет достаточно строгие требования к разработчикам, которые хотят выставлять свои приложения в iPhone App Store, Google создал платформу Android открытой (в оригинале wide open). В настоящее время вы можете писать приложения PHP. Парни из Irontech создали необходимое, и используя Scripting Layer для Android (SL4A), вы можете создавать на PHP приложения для Android.
Нет!
В этой статье я расскажу как установить, настроить и использовать PHP для Android и SL4A, также мы увидим демо приложения и вы получите первый опыт разработки приложений для Android на PHP.
Установка PHP для Android
Для установки PHP для Android, у вас должен быть телефон или эмулятор поддерживающий Android версии 1.5 или больше, также в настройках установки приложений, должна стоять галочка на установке приложений из неизвестных источников. После всего этого, просто установите два пакета SL4A environment и PHP for Android APK.
Установка SL4A достаточно проста, однако после установки пакета PHP for Android application, необходимо запустить его и нажать «install» для полной установки(В процессе установки программа скачивает где-то около 2 МБ). Если у вас появились проблемы с установкой, то есть видео-демонстрация на Vimeo((или здесь)).
Настройка среды разработки PHP для Android
Если вы установили PHP для Android, теоретически, вы можете писать приложения на своем телефоне. Но с практической точки зрения, это не будет хорошей идеей. То что вы должны сделать это скачать Android SDK, установить эмулятор и начать писать код, используя ваш любимый редактор.
После скачивания SDK, разархивируйте содержимое, запустите приложение Android, находящееся в каталоге tools, и установите эмулятор. В меню Android SDK and AVD Manager, выберите Virtual Devices и нажмите на кнопку New. Назовите ваш эмулятор (например «Droid2») и выберите Android 2.2. Введите 10 МБ в качестве размера SD Card и нажмите Create AVD.
Теперь у вас есть настроенный эмулятор, нажмите кнопочку Start. Здесь возникает некоторая сложность, вы не можете просто скопировать файлы на виртуальное устройство, которое только что создали. Вам необходимо настроить форвардинг портов (port forwarding) и поместить ваш PHP-скрипт на виртуальное устройство, используя программу под названием adb, которая является частью Android SDK. Она также находится в каталоге tools.
Далее вы запустите сервер на вашем виртуальном устройстве, соединитесь с сервером для передачи вашего скрипта. Следующие шаги помогут вам запустить все на столько быстро на сколько это возможно. (Вы можете прочитать полную документацию по этому процессу здесь).
На вашем запущенном виртуальном устройстве перейдите на экран Applications и нажмите SL4A.
# на экране SL4A, нажмите кнопочку Menu, выберите View и выберите Interpreters.
# Нажмите Menu снова, выберите Start Server и выберите Private.
# Опустите область уведомлений (Android notification bar) вниз и вы увидите Службу SL4A. (Нажмите на службу и запишите номер порта, который прослушивает ваш сервер, например 47000.)
# Откройте командную строку и установите форвардинг портов, используя команду adb. Например, введите команду «adb forward tcp:9999 tcp:47000» (замените 47000 на номер вашего порта).
# Установите переменную окружения AP_PORT. На UNIX или Mac, запустите «export AP_PORT=9999». На Windows «set AP_PORT=9999».
# Для теста работы эмулятора запустите «run adb push my_script.php /sdcard/sl4a/scripts» (замените my_script.php на название вашего скрипта).
Вы также можете работать с реальным телефоном. Следуйте теми же шагами, что и с эмулятором. Чтобы облегчить процесс установите переменную окружения ANDROID_HOME, которая будет указывать на расположение вашего Android SDK и добавьте путь к каталогу tools в список путей (что-то я не особо понял как это сделать на телефоне, если читатели знают, то пусть напишут в комментариях)
Создание Android приложений на PHP
Написание приложений на PHP очень легкий процесс после того как вы настроили все что описано выше. Единственно что стоит отметить, что версия PHP для Android очень урезана. В вашем распоряжении будут основные функции PHP и поддержка JSON. А если же вы являетесь разработчиком Android, который хорошо знаком с Java фреймворком для Android, вы заметите что Scripting Layer для Android не обеспечивает доступ ко всем компонентам, которые бы вы получили, используя для разработки Java (будем надеятся что это только пока).
То что обеспечивает SL4A — это только фасад к подмножеству Android API. (Полный список методов, обеспечиваемых SL4A, доступен тут ) В чем же прикол PHP для Android — вы можете легко разрабатывать приложени е и видеть его работу, написав всего лишь несколько строк кода. Давайте рассмотрим приложение, которое работает с котировками, которое занимает меньше 60 строк кода.
- ‘QUOTE_SERVER’ , ‘http://quoter.take88.com/?ticker=%s’ );
- require_once( «Android.php» );
- $droid = new Android();
- $action = ‘get_tickers’ ;
- $tickers = » ;
- while (TRUE) <
- switch ($action) <
- case ‘quote’ :
- $droid->dialogCreateSpinnerProgress( «Querying stock information server . » , «Please wait» );
- $droid->dialogShow();
- $quotes = @array_slice(json_decode(file_get_contents(sprintf(QUOTE_SERVER, $tickers))), 0, 3);
- $droid->vibrate();
- $droid->dialogDismiss();
- // Possible data points.
- // «SYMBOL»,»NAME»,»LAST_TRADE»,»MORE_INFO»,»LAST_TRADE_DATE»,»LAST_TRADE_TIME»,»OPEN»,»DAYS_HIGH»,»DAYS_LOW»,»DIVIDEND_SHARE»,»PE_RATIO»,»52_WEEK_LOW»,»52_WEEK_HIGH»,»VOLUME»
- $output = » ;
- for ($i = 0, $cnt = count($quotes); $i «Company: » . $quotes[$i]->NAME . «\n» ;
- $output .= «Ticker: » . $quotes[$i]->SYMBOL . «\n» ;
- $output .= «Last trade: $» . $quotes[$i]->LAST_TRADE . «\n» ;
- $output .= «\n» ;
- >
- $output = html_entity_decode($output, ENT_QUOTES, «UTF-8» );
- // Something is wrong with ‘
- $output = str_replace( «‘» , «‘» , $output);
- $droid->dialogCreateAlert( «Your stock quotes» , $output);
- $droid->dialogSetPositiveButtonText( «Get new quote» );
- $droid->dialogSetNegativeButtonText( «Exit» );
- $droid->dialogShow();
- $response = $droid->dialogGetResponse();
- if ($response[ ‘result’ ]->which == ‘negative’ ) <
- $action = «exit» ;
- > else <
- $action = ‘get_tickers’ ;
- >
- break ;
- case ‘get_tickers’ :
- $response = $droid->getInput( «Stock Tickers (max. 3)» , «Enter Tickers.\nSeparate with spaces.» );
- $tickers = str_replace( ‘ ‘ , ‘+’ , $response[ ‘result’ ]);
- $droid->vibrate();
- $action = ‘quote’ ;
- break ;
- case ‘exit’ :
- $droid->exit();
- exit();
- break ;
- >
- >
- ?>
* This source code was highlighted with Source Code Highlighter .
Скопируйте и поместите этот код в редактор, сохраните под именем quoter4android.php и загрузите его в эмуляторе. Если эмулятор не запущен, запустите его, настройте форвардинг портови загрузите quoter4android.php, используя adb.
Для запуска приложения в вашем эмуляторе, перейдите на экран приложения, нажмите иконку SL4A и нажмите quoter4android.php.
Для установки quoter4android.php на ваш телефон, вы можете настроить форвардинг портов, но легче соединить телефон с компьютером через USB и скопировать скрипт в каталог sl4a/scripts. Однако для запуска скрипта, необходимо отсоединить его от компьютера, иначе вы не увидите установленные скрипты, а зщатем кликните иконку SL4A.
Заключение
С SL4A и PHP for Android можно сделать много интересных вещей; эта статья всего лишь маленькая демонстрация возможностей. Все эти приложения очень молоды — новая версия SL4A вышла когда я писал эту статью — и в будущем мы будем получать все новые и новые возможности.
Источник