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.
Téléchargez le fichier jar à partir du dernier JAR en téléchargement ici
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 "";
}
}
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"));
}
}
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