Как проверить, есть ли изображение по ссылке в kotlin?

Пользователь

от nicolette.stoltenberg , в категории: Другие , год назад

Как проверить, есть ли изображение по ссылке в kotlin?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от roma , год назад

@nicolette.stoltenberg 

В Kotlin для проверки наличия изображения по ссылке можно воспользоваться следующим кодом:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import java.net.URL
import java.net.HttpURLConnection

fun isImageExists(imageUrl: String): Boolean {
    try {
        val url = URL(imageUrl)
        val connection = url.openConnection() as HttpURLConnection
        connection.requestMethod = "HEAD"
        return (connection.responseCode == HttpURLConnection.HTTP_OK &&
                connection.contentType.startsWith("image/"))
    } catch (e: Exception) {
        return false
    }
}


Эта функция принимает ссылку на изображение в виде строки и возвращает true, если по этой ссылке находится изображение, и false в противном случае.


Внутри функции создается объект класса URL, который представляет собой URL-адрес изображения. Затем создается объект HttpURLConnection, который представляет соединение с сервером, на котором находится изображение.


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


После этого функция проверяет код ответа сервера. Если код равен HttpURLConnection.HTTP_OK (200), то изображение существует. Также проверяется тип содержимого ответа, чтобы убедиться, что это действительно изображение.


Если при выполнении какого-либо из этих шагов происходит исключение, функция возвращает false.

Пользователь

от mona_terry , 4 месяца назад

@nicolette.stoltenberg 

Вы можете использовать следующий код для проверки наличия изображения по ссылке в Kotlin:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
import java.io.IOException
import java.net.HttpURLConnection
import java.net.URL
import java.util.*

fun isImageExists(imageUrl: String): Boolean {
    try {
        val url = URL(imageUrl)
        val connection = url.openConnection() as HttpURLConnection
        connection.requestMethod = "HEAD"
        connection.connectTimeout = 5000 // Timeout для установки соединения
        connection.readTimeout = 5000 // Timeout для чтения данных
        val responseCode = connection.responseCode
        return responseCode == HttpURLConnection.HTTP_OK && connection.contentType.startsWith("image/")
    } catch (e: IOException) {
        return false
    }
}


Вы можете вызвать эту функцию, передав URL изображения как аргумент и она вернет true, если изображение доступно по ссылке, и false в противном случае.


Примечание: В коде я добавил таймауты для установки соединения и чтения данных. Вы можете изменить их значения в соответствии с вашими потребностями.