Отправка HTTP-запроса с помощью приложения - AndroidStudio

Я хотел бы отправлять HTTP-запросы из моего приложения для Android при нажатии кнопки на ESP8266, который ожидает доступа к любой веб-странице, однако я бы предпочел, чтобы мое приложение для Android фактически не открывало веб-страницу, а просто «отправляло HTTP Запрос"

Прямо сейчас использую;

startActivity(new Intent(Intent.ACTION_QUICK_VIEW, Uri.parse("http://192.168.1.201/onled")));

и он работает, но, очевидно, открывает веб-страницу ...

У кого-нибудь есть хорошее предложение, как решить мою проблему? Я новичок в java.

Вместо команды HTML, я думаю, вы ищете термин HTTP-запрос

RobCo 18.10.2018 13:38
developer.android.com/training/volley/request
Philipp Sander 18.10.2018 13:38
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
2 780
3

Ответы 3

Вы должны создать HTTP-соединение и HTTP-запрос.

Сделать это можно несколькими способами:

  • используйте HttpURLConnection, изначально доступный в Java - подробности см. в этом руководстве: https://www.mkyong.com/java/how-to-send-http-request-getpost-in-java/
  • используйте специальную библиотеку, которая делает то же самое немного лучше - например, OkHttp

Помните, что отправка HTTP-запроса - это недетерминированная операция, и вы должны выполнять ее в отдельном потоке без пользовательского интерфейса, чтобы пользовательский интерфейс оставался разблокированным. Вы можете сделать это через AsyncTask, что является самым простым решением, но вы также можете использовать RxJava с RxAndroid или другими подходами.

ГРАММ...! Я знал, что задаю неправильный вопрос! Я посмотрю и на руководства, которые вы связали, и посмотрю, что у меня получится! Спасибо за ваш ответ

Mads Gad Krogsgaard 19.10.2018 17:38

Есть много способов отправить HTTP-запросы из приложения. Например, используя HttpURLConnection с методом GET, вы можете действовать следующим образом:

 StringBuilder content = new StringBuilder();
        try {
            URL u1 = new URL(url);
            HttpURLConnection uc1 = (HttpURLConnection) u1.openConnection();
            if (uc1.getResponseCode()==HttpURLConnection.HTTP_OK) {

                InputStream is = uc1.getInputStream();
                BufferedReader br = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
                String line;
                while ((line = br.readLine()) != null) {

                    content.append(line).append("\n");

                }

            }//other codes

Вы можете найти упрощенные способы сделать это с помощью самых изощренных методов Google:

Найдите ссылку здесь

new AsyncTask<Void,Void,Void>(){
        private Exception exception;
        @Override
        protected Void doInBackground(Void... voids) {
            try{
                URL url= new URL("http://yourserveraddress/resource.extension");
                HttpURLConnection con= (HttpURLConnection) url.openConnection();
                //write additional POST data to url.getOutputStream() if you wanna use POST method 
            }catch (Exception ex){
                this.exception=ex;
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);
        }
    }.execute();

Другие вопросы по теме