Sample Java Code (Traditional)
The following examples demonstrate how to access the P6 REST API using Java. The first example sends an HTTP GET request to the /location
endpoint to retrieve information about a location with a given ObjectId. The second example sends an HTTP POST request to the /location
endpoint to create a location.
Sample Program to Invoke GET REST API
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; 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.httpclient.HttpStatus; public class SampleGET { private static String userName = "<username>"; private static String password = "<password>"; private static String hostName = "<hostname>"; private static String portNumber = "<portnumber>"; private static String databaseName = "<databasename>"; private static String objectId = "<objectId>"; private static String loginUrl = "http://" + hostName + ":" + portNumber + "/p6ws/restapi/login" + "?DatabaseName="+ databaseName; private static String loadActivitiesURL = "http://" + hostName + ":" + portNumber + "/p6ws/restapi/location?Fields=City,Country,CountryCode,CreateDate,CreateUser,LastUpdateDate,LastUpdateUser,Latitude,Longitude,Municipality,Name,ObjectId,PostalCode,State,StateCode&Filter=ObjectId :eq: " + objectId; public static void main(String s[]) throws Exception { String responseJson = callRestURL(loginUrl, "POST"); System.out.println("Response:- " + responseJson); } private static String callRestURL(String restUrl, String method) throws Exception { HttpURLConnection conn = null; try { trustAllCert(); String cookie = callLoginAPI(restUrl, method, conn); URL loadUrl = new URL(loadActivitiesURL); conn = (HttpURLConnection) loadUrl.openConnection(); conn.setDoOutput(true); conn.setDoInput(true); conn.setRequestMethod("GET"); conn.setRequestProperty("Accept", "application/json"); conn.setRequestProperty("Content-Type", "application/json"); conn.setRequestProperty("Cookie", cookie); if (conn.getResponseCode() != HttpStatus.SC_OK) { throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode() + "Error: " + readStreamData(conn.getErrorStream())); } return readStreamData(conn.getInputStream()); } catch (Exception e) { e.printStackTrace(); } finally { if (conn != null) { conn.disconnect(); } } return ""; } private static String callLoginAPI(String restUrl, String method, HttpURLConnection conn) throws IOException { URL url = new URL(restUrl); conn = (HttpURLConnection) url.openConnection(); conn.setDoOutput(true); conn.setDoInput(true); conn.setRequestMethod(method); conn.setRequestProperty("Accept", "application/json"); conn.setRequestProperty("Content-Type", "application/json"); String userCredentials = userName + ":" + password; String base64Credentials = javax.xml.bind.DatatypeConverter.printBase64Binary(userCredentials.getBytes()); String basicAuth = base64Credentials; conn.setRequestProperty("authToken", basicAuth); if (conn.getResponseCode() != HttpStatus.SC_OK) { throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode() + "Error: " + readStreamData(conn.getErrorStream())); } return conn.getHeaderField("Set-Cookie"); } private static String readStreamData(InputStream is) throws IOException { try (BufferedReader br = new BufferedReader(new InputStreamReader(is))) { String output; StringBuilder buff = new StringBuilder(); while ((output = br.readLine()) != null) { buff.append(output); } return buff.toString(); } } private static void trustAllCert() throws NoSuchAlgorithmException, KeyManagementException { // Create a trust manager that does not validate certificate chains TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { @Override public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } @Override public void checkClientTrusted(X509Certificate[] certs, String authType) { } @Override public void checkServerTrusted(X509Certificate[] certs, String authType) { } } }; // Install the all-trusting trust manager SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); // Create all-trusting host name verifier HostnameVerifier allHostsValid = new HostnameVerifier() { @Override public boolean verify(String hostname, SSLSession session) { return true; } }; // Install the all-trusting host verifier HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid); } }
Sample Program to Invoke POST REST API
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; 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.httpclient.HttpStatus; public class SamplePOST { private static String userName = "<username>"; private static String password = "<password>"; private static String hostName = "<hostname>"; private static String portNumber = "<portnumber>"; private static String databaseName = "<databasename>"; private static String loginUrl = "http://" + hostName + ":" + portNumber + "/p6ws/restapi/login" + "?DatabaseName="+databaseName; private static String postLocationsURL = "http://" + hostName + ":" + portNumber + "/p6ws/restapi/location"; public static void main(String s[]) throws Exception { String responseJson = callRestURL(loginUrl, "POST"); System.out.println("Response:- " + responseJson); } private static String callRestURL(String restUrl, String method) throws Exception { HttpURLConnection conn = null; try { trustAllCert(); String cookie = callLoginAPI(restUrl, method, conn); URL postUrl = new URL(postLocationsURL); conn = (HttpURLConnection) postUrl.openConnection(); conn.setDoOutput(true); conn.setDoInput(true); conn.setRequestMethod(method); conn.setRequestProperty("Accept", "application/json"); conn.setRequestProperty("Content-Type", "application/json"); conn.setRequestProperty("Cookie", cookie); String input = "[{\"addressLine1\":\"MyAddress1\", \"AddressLine2\":\"MyAddress2\", \"City\":\"Chicago\", \"Country\":\"United States\",\"CountryCode\":\"1\", \"Municipality\":\"IL\", \"Name\":\"Chicago\", \"PostalCode\":\"60007\",\"State\":\"IL\",\"StateCode\":\"36\", \"Latitude\":5555555555, \"Longitude\":91}]"; OutputStream os = conn.getOutputStream(); os.write(input.getBytes("UTF-8")); os.flush(); if (conn.getResponseCode() != 200 && conn.getResponseCode() != 201 && conn.getResponseCode() != 204 && conn.getResponseCode() != 202 && conn.getResponseCode() != 203) { throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode() + " Error: " + readStreamData(conn.getErrorStream())); } return readStreamData(conn.getInputStream()); } catch (Exception e) { if (conn != null) { conn.disconnect(); } } finally { if (conn != null) { conn.disconnect(); } } return ""; } private static String callLoginAPI(String restUrl, String method, HttpURLConnection conn) throws IOException { URL url = new URL(restUrl); conn = (HttpURLConnection) url.openConnection(); conn.setDoOutput(true); conn.setDoInput(true); conn.setRequestMethod(method); conn.setRequestProperty("Accept", "application/json"); conn.setRequestProperty("Content-Type", "application/json"); String userCredentials = userName + ":" + password; String base64Credentials = javax.xml.bind.DatatypeConverter.printBase64Binary(userCredentials.getBytes()); String basicAuth = base64Credentials; conn.setRequestProperty("authToken", basicAuth); if (conn.getResponseCode() != HttpStatus.SC_OK) { throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode() + "Error: " + readStreamData(conn.getErrorStream())); } return conn.getHeaderField("Set-Cookie"); } private static String readStreamData(InputStream is) throws IOException { try (BufferedReader br = new BufferedReader(new InputStreamReader(is))) { String output; StringBuilder buff = new StringBuilder(); while ((output = br.readLine()) != null) { buff.append(output); } return buff.toString(); } } private static void trustAllCert() throws NoSuchAlgorithmException, KeyManagementException { // Create a trust manager that does not validate certificate chains TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { @Override public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } @Override public void checkClientTrusted(X509Certificate[] certs, String authType) { } @Override public void checkServerTrusted(X509Certificate[] certs, String authType) { } } }; // Install the all-trusting trust manager SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); // Create all-trusting host name verifier HostnameVerifier allHostsValid = new HostnameVerifier() { @Override public boolean verify(String hostname, SSLSession session) { return true; } }; // Install the all-trusting host verifier HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid); } }