Страница 1 из 1
LibCurl: Проверка наличия ссылки (PING) ?
Добавлено: 06 Июнь 2026, 20:21
Игорь Столяров
Добрый день !
Подскажите пожалуйста, можно с помощью библиотеки LibCurl проверить наличие страницы по заданной ссылке ?
Как я понимаю, сам CURL предлагает два варианта решения вопроса:
1. Получение заголовков веб-страницы (но многие сайты всегда возвращают т.н. "страницу 404"):
Код: Выделить всё
CURL -I https://forum.clarionlife.net/viewtopic.php?t=5369
2. Проверка HTTP-статуса ссылки (200 - OK !) - это лучше !:
Код: Выделить всё
CURL -s -w https://forum.clarionlife.net/viewtopic.php?t=5369
Можем ли мы что-то из этого cделать через класс LibCurl ? Может быть есть какие-то другие варианты ?
Вот максимально не хочется стартовать"пускач" и потом парсить "текстушки" для такой задачи.

Спасибо !
LibCurl: Проверка наличия ссылки (PING) ?
Добавлено: 06 Июнь 2026, 20:27
Дед Пахом
Если есть работающий curl-скрипт, переведите его в вызов методов libcurl.
LibCurl: Проверка наличия ссылки (PING) ?
Добавлено: 06 Июнь 2026, 20:44
Игорь Столяров
Нет скрипта. Есть только опции к вызову CURL.EXE и я не понимаю как можно их повторить через класс.

LibCurl: Проверка наличия ссылки (PING) ?
Добавлено: 06 Июнь 2026, 21:12
Дед Пахом
это скрипт и есть. Если добавить параметр --libcurl file.c и запустить скрипт, он сгенерит file.c с вызовами curl_easy_setopt, которые легко перевести на Clarion.
LibCurl: Проверка наличия ссылки (PING) ?
Добавлено: 06 Июнь 2026, 22:50
Игорь Столяров
Дед Пахом писал(а): 06 Июнь 2026, 21:12
Если добавить параметр --libcurl file.c и запустить скрипт
Спасибо ! В базовом варианте всё получилось, далее уже буду проверять на реальных ссылках.

LibCurl: Проверка наличия ссылки (PING) ?
Добавлено: 08 Июнь 2026, 9:09
Игорь Столяров
У меня получился вот такой, вполне себе, рабочий вариант (в т.ч. и для суверенных сервисов).
Если есть замечания или улучшения - буду рад услышать.
Я понимаю, что более правильный вариант был бы с TCurlClass.SendRequestStr(sLink) - но он не работает.
Код: Выделить всё
!!! Проверка доступности ссылки
HZ.CheckLink Procedure(String sLink) !,Bool
Code
Self.Curl.FreeHttpHeaders()
Self.Curl.SetSSLVerifyHost(False)
Self.Curl.SetSSLVerifyPeer(False)
Self.Curl.SetSSLVersion(CURL_SSLVERSION_DEFAULT)
Self.Curl.SetOpt(CURLOPT_TCP_KEEPALIVE,1) ! Восстанавливать подключения
Self.Curl.SetOpt(CURLOPT_NOPROGRESS,1) ! Без индикатора
Self.Curl.SetOpt(CURLOPT_NOBODY,1) ! Только заголовок
! Получить HTTP статус запроса
If Self.Curl.SendRequest(json::ToUtf8(sLink),Self.ResponseBuffer) = CURLE_OK
Return Choose(Self.Curl.GetResponseCode() = 200)
end
Return False