Android java get url

Android java get url

На сегодняшний день если не все, то большинство Android-устройств имеют доступ к сети интернет. А большое количество мобильных приложений так или иначе взаимодействуют с средой интернет: загружают файлы, авторизуются и получают информацию с внешних веб-сервисов и т.д. Рассмотрим, как мы можем использовать в своем приложении доступ к сети интернет.

Среди стандартных элементов нам доступен виджет WebView, который может загружать контент с определенного url-адреса. Но этим возможности работы с сетью в Android не ограничиваются. Для получения данных с определенного интернет-ресурса мы можем использовать классы HttpUrlConnection (для протокола HTTP) и HttpsUrlConnection (для протокола HTTPS) из стандартной библиотеки Java.

Итак, создадим новый проект с пустой MainActivity. Первым делом для работы с сетью нам надо установить в файле манифеста AndroidManifest.xml соответствующее разрешение:

В файле activity_main.xml , который представляет разметку для MainActivity, определим следующий код:

Здесь определена кнопка для загрузки данных, а сами данные для примера загружаются одновременно в виде строки в текстовое поле и в элемент WebView. Так как данных может быть очень много, то текстовое поле помещено в элемент ScrollView.

Поскольку загрузка данных может занять некоторое время, то обращение к интернет-ресурсу определим в отдельном потоке и для этого изменим код MainActivity следующим образом:

package com.example.httpapp; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.webkit.WebView; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import javax.net.ssl.HttpsURLConnection; public class MainActivity extends AppCompatActivity < @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView contentView = findViewById(R.id.content); WebView webView = findViewById(R.id.webView); webView.getSettings().setJavaScriptEnabled(true); Button btnFetch = findViewById(R.id.downloadBtn); btnFetch.setOnClickListener(new View.OnClickListener() < @Override public void onClick(View v) < contentView.setText("Загрузка. "); new Thread(new Runnable() < public void run() < try< String content = getContent("https://stackoverflow.com/"); webView.post(new Runnable() < public void run() < webView.loadDataWithBaseURL("https://stackoverflow.com/",content, "text/html", "UTF-8", "https://stackoverflow.com/"); Toast.makeText(getApplicationContext(), "Данные загружены", Toast.LENGTH_SHORT).show(); >>); contentView.post(new Runnable() < public void run() < contentView.setText(content); >>); > catch (IOException ex) < contentView.post(new Runnable() < public void run() < contentView.setText("Ошибка: " + ex.getMessage()); Toast.makeText(getApplicationContext(), "Ошибка", Toast.LENGTH_SHORT).show(); >>); > > >).start(); > >); > private String getContent(String path) throws IOException < BufferedReader reader=null; InputStream stream = null; HttpsURLConnection connection = null; try < URL url=new URL(path); connection =(HttpsURLConnection)url.openConnection(); connection.setRequestMethod("GET"); connection.setReadTimeout(10000); connection.connect(); stream = connection.getInputStream(); reader= new BufferedReader(new InputStreamReader(stream)); StringBuilder buf=new StringBuilder(); String line; while ((line=reader.readLine()) != null) < buf.append(line).append("\n"); >return(buf.toString()); > finally < if (reader != null) < reader.close(); >if (stream != null) < stream.close(); >if (connection != null) < connection.disconnect(); >> > >

Непосредственно для самой загрузки определен метод getContent() , который будет загружать веб-страницу с помощью класса HttpsURLConnection и возвращать код загруженной страницы в виде строки.

Читайте также:  Css selectors and examples

Вначале создается элемент HttpsURLConnection :

URL url=new URL(path); connection =(HttpsURLConnection)url.openConnection(); connection.setRequestMethod("GET"); // установка метода получения данных -GET connection.setReadTimeout(10000); // установка таймаута перед выполнением - 10 000 миллисекунд connection.connect(); // подключаемся к ресурсу

После подключение происходит считывание со входного потока:

stream = connection.getInputStream(); reader= new BufferedReader(new InputStreamReader(stream));

Используя входной поток, мы можем считать его в строку.

Этот метод getContent() затем будет вызываться в обработчике нажатия кнопки:

Button btnFetch = (Button)findViewById(R.id.downloadBtn); btnFetch.setOnClickListener(new View.OnClickListener() < @Override public void onClick(View v) < contentView.setText("Загрузка. "); new Thread(new Runnable() < public void run() < try< String content = getContent("https://stackoverflow.com/");

Поскольку загрузка может занять долгое время, то метод getContent() в отдельном потоке с помощью объектов Thread и Runnable. Для примера в данном случае обращение идет к ресурсу "https://stackoverflow.com/".

Запустим приложение и нажмем на кнопку. И при наличии интернета приложение загрузит гравную страницу с "https://stackoverflow.com/" и отобразит ее в WebView и TextView:

HttpsURLConnection и загрузка данных из интернета в Android и Java

Конечно, данный способ вряд ли подходит для просмотра интернет-страниц, однако таким образом, мы можем получать какие-либо данные (не интернет-страницы) от различных веб-сервисов, например, в формате xml или json (например, различные курсы валют, показатели погоды), используя специальные api, и затем после обработки показывать их пользователю.

Источник

Android java get url

Полный текст статьи и исходники программы доступны только зарегистрированным участникам сайта.

Прочитайте внимательно условия! В начале каждой статьи указывается, к какому курсу относится данная статья. Например, если статья из 4 курса, значит нужно заплатить за все курсы по четвёртый включительно.

Стоимость регистрации - символические 360 рублей. После регистрации у вас будет доступ ко второму курсу.

Для регистрации сначала необходимо пополнить ЮMoney 410011383280263 на указанную сумму или QIWI (перевод по никнейму), а затем прислать письмо на адрес [email protected] с указанием, на какой кошелёк вы делали оплату и реквизиты, по которым можно вас определить (не прикрепляйте к письму картинки или файлы, пишите в письме). Учитывайте комиссию при переводах.

По поводу перевода на ЮMoney. Если делать перевод по указанной ссылке, то к сумме нужно прибавить 3% самостоятельно. Если вы знаете, как переводить по номеру кошелька 410011383280263 без указанной ссылки, то по идее ваш банк сам рассчитает комиссию. Эти новые правила стали применяться в октябре 2022, возможно вам придётся доплачивать, когда я увижу точную сумму прихода.

Не присылайте в письме мои номера кошельков - поверьте, я их знаю и без вас.

В ответном письме вы получите учётные данные для чтения статей из закрытой зоны за второй курс.

Доступ к третьему курсу обучения доступен только после оплаты второго курса и составляет 360 руб.

Доступ к четвёртому курсу обучения доступен после оплаты третьего курса и составляет 360 руб. и т.д.

При оплате сразу всех курсов одновременно (2-10) цена составит 3200 руб.

Доступ даётся как минимум на один год. Для тех, кто оплатил третий и другие курсы, сроки доступа увеличиваются.

Также возможен приём на PayPal (только для зарубежных пользователей). Обратите внимание, что в этом случае стоимость одного курса составляет 7$.

На данный момент PayPal не доступен в России.

Webmoney тоже не особо доступен в России, но по запросу можно отправить на Z-кошелёк (7S), если вдруг кому-то удобно из других стран.

Источник

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