Skip to main content
Active IQ Unified Manager 9.16
O português é fornecido por meio de tradução automática para sua conveniência. O inglês precede o português em caso de inconsistências.

Olá servidor API

Colaboradores

O Hello API Server é um programa de exemplo que demonstra como invocar uma API REST no Active IQ Unified Manager usando um cliente REST simples. O programa de exemplo fornece detalhes básicos sobre o servidor de API no formato JSON (o servidor suporta apenas application/json o formato).

O URI usado é: https://<hostname>/api/datacenter/svm/svms. Este código de amostra toma os seguintes parâmetros de entrada:

  • O endereço IP do servidor API ou FQDN

  • Opcional: Número da porta (padrão: 443)

  • Nome de utilizador

  • Palavra-passe

  • Formato da resposta (application/json)

Para invocar APIs REST, você também pode usar outros scripts como Jersey e RESTEasy para escrever um cliente REST Java para Active IQ Unified Manager. Você deve estar ciente das seguintes considerações sobre o código de exemplo:

  • Usa uma conexão HTTPS com o Active IQ Unified Manager para invocar o URI REST especificado

  • Ignora o certificado fornecido pelo Active IQ Unified Manager

  • Ignora a verificação do nome do host durante o handshake

  • Utiliza javax.net.ssl.HttpsURLConnection para uma ligação URI

  • Usa uma biblioteca de (`org.apache.commons.codec.binary.Base64`terceiros ) para construir a cadeia de carateres codificada Base64 usada na autenticação básica HTTP

Para compilar e executar o código de exemplo, você deve usar o compilador Java 1,8 ou posterior.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.apache.commons.codec.binary.Base64;

public class HelloApiServer {

	private static String server;
	private static String user;
	private static String password;
	private static String response_format = "json";
	private static String server_url;
	private static String port = null;

	/*
	 * * The main method which takes user inputs and performs the * necessary steps
	 * to invoke the REST URI and show the response
	 */ public static void main(String[] args) {
		if (args.length < 2 || args.length > 3) {
			printUsage();
			System.exit(1);
		}
		setUserArguments(args);
		String serverBaseUrl = "https://" + server;
		if (null != port) {
			serverBaseUrl = serverBaseUrl + ":" + port;
		}
		server_url = serverBaseUrl + "/api/datacenter/svm/svms";
		try {
			HttpsURLConnection connection = getAllTrustingHttpsUrlConnection();
			if (connection == null) {
				System.err.println("FATAL: Failed to create HTTPS connection to URL: " + server_url);
				System.exit(1);
			}
			System.out.println("Invoking API: " + server_url);
			connection.setRequestMethod("GET");
			connection.setRequestProperty("Accept", "application/" + response_format);
			String authString = getAuthorizationString();
			connection.setRequestProperty("Authorization", "Basic " + authString);
			if (connection.getResponseCode() != 200) {
				System.err.println("API Invocation Failed : HTTP error code : " + connection.getResponseCode() + " : "
						+ connection.getResponseMessage());
				System.exit(1);
			}
			BufferedReader br = new BufferedReader(new InputStreamReader((connection.getInputStream())));
			String response;
			System.out.println("Response:");
			while ((response = br.readLine()) != null) {
				System.out.println(response);
			}
			connection.disconnect();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/* Print the usage of this sample code */ private static void printUsage() {
		System.out.println("\nUsage:\n\tHelloApiServer <hostname> <user> <password>\n");
		System.out.println("\nExamples:\n\tHelloApiServer localhost admin mypassword");
		System.out.println("\tHelloApiServer 10.22.12.34:8320 admin password");
		System.out.println("\tHelloApiServer 10.22.12.34 admin password ");
		System.out.println("\tHelloApiServer 10.22.12.34:8212 admin password \n");
		System.out.println("\nNote:\n\t(1) When port number is not provided, 443 is chosen by default.");
	}

	/* * Set the server, port, username and password * based on user inputs. */ private static void setUserArguments(
			String[] args) {
		server = args[0];
		user = args[1];
		password = args[2];
		if (server.contains(":")) {
			String[] parts = server.split(":");
			server = parts[0];
			port = parts[1];
		}
	}

	/*
	 * * Create a trust manager which accepts all certificates and * use this trust
	 * manager to initialize the SSL Context. * Create a HttpsURLConnection for this
	 * SSL Context and skip * server hostname verification during SSL handshake. * *
	 * Note: Trusting all certificates or skipping hostname verification * is not
	 * required for API Services to work. These are done here to * keep this sample
	 * REST Client code as simple as possible.
	 */ private static HttpsURLConnection getAllTrustingHttpsUrlConnection()    {        HttpsURLConnection conn = null;        try {            /* Creating a trust manager that does not validate certificate chains */            TrustManager[] trustAllCertificatesManager = new                    TrustManager[]{new X509TrustManager(){
	 public X509Certificate[] getAcceptedIssuers(){return  null;}
	 public void checkClientTrusted(X509Certificate[]                                                       certs, String authType){}
	 public void checkServerTrusted(X509Certificate[]                                                       certs, String authType){}            }};            /* Initialize the SSLContext with the all-trusting trust manager */
	 SSLContext sslContext = SSLContext.getInstance("TLS");            sslContext.init(null, trustAllCertificatesManager, new                    SecureRandom());            HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());            URL url = new URL(server_url);            conn = (HttpsURLConnection) url.openConnection();            /* Do not perform an actual hostname verification during SSL Handshake.            Let all hostname pass through as verified.*/            conn.setHostnameVerifier(new HostnameVerifier() {                public boolean verify(String host, SSLSession                        session) {                    return true;                }            });        } catch (Exception e) {            e.printStackTrace();        }        return conn;    }

	/*
	 * * This forms the Base64 encoded string using the username and password *
	 * provided by the user. This is required for HTTP Basic Authentication.
	 */ private static String getAuthorizationString() {
		String userPassword = user + ":" + password;
		byte[] authEncodedBytes = Base64.encodeBase64(userPassword.getBytes());
		String authString = new String(authEncodedBytes);
		return authString;
	}

}