Zabbix API in Java

Dieses Mal habe ich ein Programm erstellt, um selbst mit dem Zabbix-Server zu interagieren. Um den Vorbereitungsaufwand zu verringern, wird die Codierung von httpclient von der Standardbibliothek verwaltet.

Was vorzubereiten?

Laden Sie die JAR-Datei von der neuesten JAR in Download [hier] herunter (https://github.com/alibaba/fastjson).

HttpClient

Ich habe auf [hier] verwiesen (https://kazuhira-r.hatenablog.com/entry/20131026/1382796711). Wenn Sie ein JSON-Objekt gemäß den JsonRPC-Regeln auf den Zabbix-Server werfen, wird ein JSON-Objekt zurückgegeben, das aus jsonrpc, result und id besteht.

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()); //Werfen Sie hier JSON-Daten
                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; //Hier erhalten Sie JSON-Daten
                        }
                    }
                }
            } finally {
                if (connection != null) {
                    connection.disconnect();
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        return "";
    }
}

Erstellen eines JSON-Objekts

Der Client sendet ein JSON-Objekt, das aus jsonrpc, method, params, id und auth besteht, an den Server. Rufen Sie diesmal die Version ab und melden Sie sich an.

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);//Nicht erforderlich, wenn Sie die Version erhalten
        result = api.Post(json);
        System.out.println(result);

        param.put("user", "name");//Nutzername
        param.put("password", "pass");//Passwort

        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"));
    }
}

Ausführungsergebnis

Die Version wurde so erhalten, dass die JSON-Rohdaten zurückgegeben wurden. Auth wurde aus dem Ergebnis extrahiert.

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

Als nächstes folgt eine übersichtliche Zusammenfassung.

Recommended Posts

Zabbix API in Java
Treffen Sie Zaims API (OAuth 1.0) in Java
Analysieren der COTOHA-API-Syntaxanalyse in Java
JPA (Java Persistence API) in Eclipse
Partisierung in Java
Janken in Java
Java Stream API
Umfangsrate in Java
FizzBuzz in Java
Ich habe versucht, die Elasticsearch-API in Java zu verwenden
Implementieren Sie API Gateway Lambda Authorizer in Java Lambda
Studieren Sie Java 8 (Datums-API im Paket java.time)
Versuchen Sie es mit der Stream-API in Java
Rufen Sie die Windows-Benachrichtigungs-API in Java auf
Versuchen Sie es mit der JSON-Format-API in Java
Abrufen des Verlaufs vom Zabbix-Server in Java
Lesen Sie JSON in Java
Interpreter-Implementierung durch Java
Machen Sie einen Blackjack mit Java
Janken App in Java
Einschränkungsprogrammierung in Java
Setzen Sie Java8 in Centos7
NVL-artiger Typ in Java
Verbinden Sie Arrays in Java
"Hallo Welt" in Java
Packen Sie die API-Antwort (Java)
Aufrufbare Schnittstelle in Java
ChatWork4j für die Verwendung der ChatWork-API in Java
[Java] API-Erstellung mit Jerjey (Jax-rs) mit Eclipse
[Java] Stream API / Map
Azure funktioniert in Java
Fehlerbehebung bei der Docker-Client Java API
Einfache HTML-Spezialchars in Java
Versuchen Sie, die Cloud Vision-API von GCP in Java zu verwenden
Boyer-Moore-Implementierung in Java
Hallo Welt in Java
WebApi-Memorandum mit Java
Typbestimmung in Java
Befehle in Java ausführen (Ping)
Verschiedene Threads in Java
Implementierung der Heap-Sortierung (in Java)
ASCII-Kunst in Java
Listen in Java vergleichen
POST JSON in Java
Fehler in Java ausdrücken
Erstellen Sie JSON in Java
Datumsmanipulation in Java 8
Was ist neu in Java 8?
Versuchen Sie es mit der Syntaxanalyse der COTOHA-API in Java
Verwenden Sie PreparedStatement in Java
Was ist neu in Java 9,10,11
Parallele Ausführung in Java
Versuchte Mastodons Toot- und Streaming-API in Java
Rufen Sie die Amazon Product Advertising API 5.0 (PA-API v5) in Java auf
Versuchen Sie es mit RocksDB mit Java
Lesen Sie Binärdateien in Java 1
Holen Sie sich EXIF-Informationen in Java