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.
Laden Sie die JAR-Datei von der neuesten JAR in Download [hier] herunter (https://github.com/alibaba/fastjson).
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 "";
}
}
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"));
}
}
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