API Zabbix en Java

Cette fois, j'ai créé un programme pour interagir avec le serveur Zabbix par moi-même. Pour réduire la quantité de préparation, le codage de httpclient est géré par la bibliothèque standard.

Quoi préparer

Téléchargez le fichier jar à partir du dernier JAR en téléchargement ici

HttpClient

J'ai fait référence à ici. Lancer un objet JSON sur le serveur Zabbix conformément aux règles JsonRPC renverra un objet JSON composé de jsonrpc, result et id.

public class Api {
    public String Post(JSONObject json) {
        try {
            URL url = new URL("http://127.0.0.1/zabbix/api_jsonrpc.php");

            HttpURLConnection connection = null;

            try {
                connection = (HttpURLConnection) url.openConnection();
                connection.setDoOutput(true);
                connection.setRequestMethod("POST");
                connection.setRequestProperty("Content-Type", "application/json; charset=utf-8");

                BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream(),
                        StandardCharsets.UTF_8));
                writer.write(json.toString()); //Jetez les données JSON ici
                writer.flush();

                if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
                    try (InputStreamReader isr = new InputStreamReader(connection.getInputStream(),
                            StandardCharsets.UTF_8);
                         BufferedReader reader = new BufferedReader(isr)) {
                        String line;
                        while ((line = reader.readLine()) != null) {
                                return line; //Recevez des données JSON ici
                        }
                    }
                }
            } finally {
                if (connection != null) {
                    connection.disconnect();
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        return "";
    }
}

Créer un objet JSON

Le client lance un objet JSON composé de jsonrpc, method, params, id et auth sur le serveur. Cette fois, récupérez la version et connectez-vous.

public class Main {
    public static void main(String[] args) {
        String result;

        Api api = new Api();
        JSONObject json = new JSONObject();
        JSONObject param = new JSONObject();

        json.put("jsonrpc", "2.0");
        json.put("method", "apiinfo.version");
        json.put("params", param);
        json.put("id", 1);
        json.put("auth", null);//Non requis lors de l'obtention de la version
        result = api.Post(json);
        System.out.println(result);

        param.put("user", "name");//Nom d'utilisateur
        param.put("password", "pass");//mot de passe

        json.put("jsonrpc", "2.0");
        json.put("method", "user.login");
        json.put("params", param);
        json.put("id", 1);
        json.put("auth", null);
        result = api.Post(json);
        System.out.println(JSON.parseObject(result).get("result"));
    }
}

Résultat d'exécution

La version a été récupérée afin que les données JSON brutes soient renvoyées. L'authentification a été extraite du résultat.

{"jsonrpc":"2.0","result":"4.0.3","id":1}
012225192b38d347ddf6098d291f30df

Vient ensuite un résumé soigné.

Recommended Posts

API Zabbix en Java
Hit l'API de Zaim (OAuth 1.0) en Java
Analyser l'analyse syntaxique de l'API COTOHA en Java
JPA (API de persistance Java) dans Eclipse
Partition en Java
Janken à Java
API Java Stream
Taux circonférentiel à Java
FizzBuzz en Java
J'ai essayé d'utiliser l'API Elasticsearch en Java
Implémenter l'autorisation API Gateway Lambda dans Java Lambda
Étude de Java 8 (API de date dans le package java.time)
Essayez d'utiliser l'API Stream en Java
Appelez l'API de notification Windows en Java
Essayez d'utiliser l'API au format JSON en Java
Obtenir l'historique du serveur Zabbix en Java
Lire JSON en Java
Implémentation de l'interpréteur par Java
Faites un blackjack avec Java
Application Janken en Java
Programmation par contraintes en Java
Mettez java8 dans centos7
NVL-ish guy en Java
Joindre des tableaux en Java
"Hello World" en Java
Emballez la réponse de l'API (java)
Interface appelable en Java
ChatWork4j pour l'utilisation de l'API ChatWork en Java
[Java] Création d'API à l'aide de Jerjey (Jax-rs) avec eclipse
[Java] API / carte de flux
Fonctions Azure en Java
Dépannage de l'API Java Docker-Client
Simple htmlspecialchars en Java
Essayez d'utiliser l'API Cloud Vision de GCP en Java
Implémentation Boyer-Moore en Java
Hello World en Java
Mémorandum WebApi avec Java
Détermination de type en Java
Exécuter des commandes en Java (ping)
Divers threads en java
Implémentation du tri de tas (en java)
Art ASCII à Java
Comparer des listes en Java
POST JSON en Java
Exprimer l'échec en Java
Créer JSON en Java
Manipulation de la date dans Java 8
Nouveautés de Java 8
Essayez d'utiliser l'analyse syntaxique de l'API COTOHA en Java
Utiliser PreparedStatement en Java
Nouveautés de Java 9,10,11
Exécution parallèle en Java
Essayé l'API Toot et Streaming de Mastodon en Java
Appelez l'API Amazon Product Advertising 5.0 (PA-API v5) en Java
Essayez d'utiliser RocksDB avec Java
Lire des fichiers binaires en Java 1
Obtenir des informations EXIF en Java