エフサステクノロジーズ株式会社

本ページの製品は2024年4月1日より、エフサステクノロジーズ株式会社に統合となり、順次、切り替えを実施してまいります。一部、富士通表記が混在することがありますので、ご了承ください。

Active IQ Unified Manager 9.14

to English version

Hello API server

Hello API serverは、Active IQ Unified ManagerでシンプルなRESTクライアントを使用してREST APIを呼び出す方法を示すサンプル プログラムです。このサンプル プログラムは、APIサーバーに関する基本的な詳細情報をJSON形式で表示します(サーバーではapplication/json形式のみがサポートされます)。

使用されるURIは、https://<hostname>/api/datacenter/svm/svmsです。このサンプル コードは、次の入力パラメーターを使用します。

  • APIサーバーのIPアドレスまたはFQDN

  • オプション:ポート番号(デフォルトは443)

  • ユーザー名

  • パスワード

  • 応答形式(application/json

REST APIを呼び出すために、JerseyやRESTEasyなど他のスクリプトを使用して、Active IQ Unified Manager用のJava RESTクライアントを作成することもできます。サンプル コードに関して、次の点に注意する必要があります。

  • HTTPSを使用してActive IQ Unified Managerに接続し、指定したREST URIを呼び出す

  • Active IQ Unified Managerから提供される証明書を無視する

  • ハンドシェイク中にホスト名の検証をスキップする

  • URI接続にjavax.net.ssl.HttpsURLConnectionを使用する

  • サードパーティのライブラリー(org.apache.commons.codec.binary.Base64)を使用して、HTTPベーシック認証で使用されるBase64エンコード文字列を作成する

サンプル コードをコンパイルして実行するには、バージョン1.8以降のJavaコンパイラを使用する必要があります。

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

}
Top of Page