Java-реализация API check-host.net
Если у вас возникнут какие-либо проблемы, сообщите о них в системе отслеживания проблем.
Если вы просто хотите поговорить или вам нужна помощь с CheckHost4J, присоединяйтесь к моему Discord.
Чтобы использовать CheckHost4J с Gradle/Maven, вы можете использовать Maven Central, Maven Lenni0451 или Jitpack.
Там же вы можете найти инструкции по внедрению этого в ваш скрипт сборки.
Если вам просто нужен последний jar-файл, вы можете загрузить его из GitHub Actions или использовать Release.
Эта библиотека требует, чтобы в вашем пути к классам был Gson.
Основной класс API — CheckHost4J
, он содержит все методы для взаимодействия с API.
final CheckHost4J checkHost = CheckHost4J . INSTANCE ;
Вы можете использовать CheckHost4J.INSTANCE
или создать новый экземпляр CheckHost4J
самостоятельно. Создав собственный экземпляр, вы можете самостоятельно определить IRequester
, который используется для отправки запросов в API.
final CheckHost4J checkHost = new CheckHost4J (...);
IRequester
по умолчанию — JavaRequester
, доступ к которому можно получить через JavaRequester.INSTANCE
. Вы также можете создать новый экземпляр, используя new JavaRequester("<user-agent>")
.
final CheckHost4J checkHost = new CheckHost4J ( new JavaRequester ( "MyUserAgent" ));
Вы можете использовать методы CheckHost4J#ping
, CheckHost4J#http
, CheckHost4J#tcpPort
, CheckHost4J#udpPort
и CheckHost4J#dns
для получения ResultNode<T>
, где T — тип результата запроса (например, PingResult
, TCPResult
).
final ResultNode < PingResult > pingResult = checkHost . ping ( "example.com" , 80 /* max nodes */ );
После того, как вы получили ResultNode<T>
вы можете использовать tickResults()
для обновления списка getResults()
.
// This will update the results list by sending the check-result request to the API,
// This might not update all results, because some might not be finished yet
// Which means you have to call this method multiple times to get all results (e.g. with a delay of 5 seconds)
pingResult . tickResults ();
final Map < ServerNode , PingResult > results = pingResult . getResults ();
results . forEach (( serverNode , result ) -> {
if ( result == null ) { // All results which are not finished yet will be null
System . out . println ( serverNode . name + " is still checking..." );
} else if ( result . getErrorMessage () != null ) {
System . out . println ( serverNode . name + " failed: " + result . getErrorMessage ());
} else {
System . out . println ( serverNode . name + " responded: " + result . getSuccessfulPings () + "/" + result . getTotalPings ());
}
});
Вы также можете получить все проверяемые узлы сервера, используя метод getNodes()
.
final List < ServerNode > nodes = pingResult . getNodes ();
Пакет de.florianmichael.checkhost4j.model.result
содержит все классы результатов, которые используются для хранения результатов запросов.
Чтобы получить список всех типов запросов, вы можете использовать перечисление ResultType
.