1. Authentication API Java
The code is running on Java 1.8, please include the below libraries in the project file first.
commons-codec-1.10.jar
commons-io-2.5.jar
commons-logging-4.0.6.jar
httpclient-4.5.2.jar
httpcore-4.4.11.jar
gson-2.6.2.ja
commons-io-2.5.jar
commons-logging-4.0.6.jar
httpclient-4.5.2.jar
httpcore-4.4.11.jar
gson-2.6.2.ja
1.1. Get Your credentials from developer portal
String consumer_key = "Your Consumer Key";
String consumer_secret = "Your Consumer Secret "
String callback_url = "Your callback URL"
String environment_url = "enterprise-api-stg.autodesk.com"; //STG Environmen
String consumer_secret = "Your Consumer Secret "
String callback_url = "Your callback URL"
String environment_url = "enterprise-api-stg.autodesk.com"; //STG Environmen
1.2. Create Signature
String timestamp = new Long(new Date().getTime()).toString().substring(0,10);
String credentialCode = callback_url + consumer_key + timestamp;
SecretKeySpec signingKey = new SecretKeySpec(consumer_secret.getBytes(),"HmacSHA256");
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(signingKey);
byte[] rawHmac = mac.doFinal(credentialCode.getBytes());
String signature = new String(Base64.encodeBase64(rawHmac));
String credentialCode = callback_url + consumer_key + timestamp;
SecretKeySpec signingKey = new SecretKeySpec(consumer_secret.getBytes(),"HmacSHA256");
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(signingKey);
byte[] rawHmac = mac.doFinal(credentialCode.getBytes());
String signature = new String(Base64.encodeBase64(rawHmac));
1.3. Create Authorization
String concatString = consumer_key + ":" + consumer_secret;
String authHeader = Base64.getEncoder().encodeToString(concatString.getBytes());
String authHeader = Base64.getEncoder().encodeToString(concatString.getBytes());
1.4. Call Authentication API to get access token
String authenticationUrl = "https://enterprise-api-stg.autodesk.com/v2/oauth/generateaccesstoken?grant_type=client_credentials";
HttpRequestBase request = new HttpPost(authenticationUrl);
request.addHeader("authorization", "Basic " + authHeader);
request.addHeader("signature", signature);
request.addHeader("timestamp", timestamp);
HttpClient client = HttpClientBuilder.create().build();
HttpResponse response = client.execute(request);
String jsonResponse = IOUtils.toString(response.getEntity().getContent(), "UTF-8");
try {
JsonParser parser = new JsonParser();
Object obj = parser.parse(jsonResponse);
JsonObject gsonObj = (JsonObject) obj;
String name = gsonObj.get("access_token").getAsString();
System.out.println("Access Token: " + name);
}catch (Exception e) { e.printStackTrace(); }
HttpRequestBase request = new HttpPost(authenticationUrl);
request.addHeader("authorization", "Basic " + authHeader);
request.addHeader("signature", signature);
request.addHeader("timestamp", timestamp);
HttpClient client = HttpClientBuilder.create().build();
HttpResponse response = client.execute(request);
String jsonResponse = IOUtils.toString(response.getEntity().getContent(), "UTF-8");
try {
JsonParser parser = new JsonParser();
Object obj = parser.parse(jsonResponse);
JsonObject gsonObj = (JsonObject) obj;
String name = gsonObj.get("access_token").getAsString();
System.out.println("Access Token: " + name);
}catch (Exception e) { e.printStackTrace(); }
Response:
{
Access Token: YKybGvXXAGJA4psDkt5nZG5AnEoy
Access Token: YKybGvXXAGJA4psDkt5nZG5AnEoy
This access token will be used in next code sample.
2. Sample call to Autodesk API
In this example, we are calling GetOrderDetails API
2.1 Get your CSN, order number, make sure access token has been created by authentication API.
String consumer_secret = "Your Consumer Secret"
String callback_url = "Your callback URL";
String partner_csn = "Your CSN";
String environment_url = "enterprise-api-stg.autodesk.com"; //STG Environment
//token comes from authentication API
String access_token = "Get Your Access Token"
String order_number = "Your order number"
String callback_url = "Your callback URL";
String partner_csn = "Your CSN";
String environment_url = "enterprise-api-stg.autodesk.com"; //STG Environment
//token comes from authentication API
String access_token = "Get Your Access Token"
String order_number = "Your order number"
Note - GetOrderDetails API has other parameters as well. Please refer to the API documentation and modify code accordingly.
2.2 Create Signature
String timestamp = Long.toString(new Date().getTime()).substring(0,10);
String credentialCode = callback_url + access_token + timestamp
SecretKeySpec signingKey = new SecretKeySpec(consumer_secret.getBytes(),"HmacSHA256");
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(signingKey);
byte[] rawHmac = mac.doFinal(credentialCode.getBytes());
String signature = new String(Base64.getEncoder().encode(rawHmac));
String credentialCode = callback_url + access_token + timestamp
SecretKeySpec signingKey = new SecretKeySpec(consumer_secret.getBytes(),"HmacSHA256");
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(signingKey);
byte[] rawHmac = mac.doFinal(credentialCode.getBytes());
String signature = new String(Base64.getEncoder().encode(rawHmac));
2.3 Call Get Order API
String GetOrderAPIUrl = "https://" + environment_url + "/v1/orders?customer_number="+ partner_csn + "&order_number=" + order_number;
HttpGet request = new HttpGet(GetOrderAPIUrl);
request.addHeader("authorization", "Bearer " + access_token);
request.addHeader("signature", signature);
request.addHeader("timestamp", timestamp);
request.addHeader("CSN", partner_csn);
HttpClient client = HttpClientBuilder.create().build();
HttpResponse response = client.execute(request);
String jsonResponse = IOUtils.toString(response.getEntity().getContent(), "UTF-8");
System.out.println(jsonResponse);
HttpGet request = new HttpGet(GetOrderAPIUrl);
request.addHeader("authorization", "Bearer " + access_token);
request.addHeader("signature", signature);
request.addHeader("timestamp", timestamp);
request.addHeader("CSN", partner_csn);
HttpClient client = HttpClientBuilder.create().build();
HttpResponse response = client.execute(request);
String jsonResponse = IOUtils.toString(response.getEntity().getContent(), "UTF-8");
System.out.println(jsonResponse);
Response:
{
"status": "OK",
"message": {
"elements": [{
order_header_array": [{
"order_date": "2019-06-10T00:00:00+0000",
"sales_order_number": "7058108640",
......
"contract_number": "110023207893",
"status": "OK",
"message": {
"elements": [{
order_header_array": [{
"order_date": "2019-06-10T00:00:00+0000",
"sales_order_number": "7058108640",
......
"contract_number": "110023207893",
3. Get value from the JSON response
try
{
JsonParser parser = new JsonParser()
Object obj = parser.parse(jsonResponse);
JsonObject gsonObj = (JsonObject) obj;
JsonObject message = (JsonObject) gsonObj.get("message")
JsonArray elements = (JsonArray) message.get("elements");
for (int i = 0; i < elements.size(); i++) {
JsonObject jsonObject1 = (JsonObject) elements.get(i)
JsonArray jsonarray1 = (JsonArray) jsonObject1.get("order_header_array")
for (int j = 0; j < jsonarray1.size(); j++) {
System.out.println("Result: "+((JsonObject) jsonarray1.get(j)).get(
"contract_number").toString())
}
}
}catch (Exception e) { e.printStackTrace(); }
{
JsonParser parser = new JsonParser()
Object obj = parser.parse(jsonResponse);
JsonObject gsonObj = (JsonObject) obj;
JsonObject message = (JsonObject) gsonObj.get("message")
JsonArray elements = (JsonArray) message.get("elements");
for (int i = 0; i < elements.size(); i++) {
JsonObject jsonObject1 = (JsonObject) elements.get(i)
JsonArray jsonarray1 = (JsonArray) jsonObject1.get("order_header_array")
for (int j = 0; j < jsonarray1.size(); j++) {
System.out.println("Result: "+((JsonObject) jsonarray1.get(j)).get(
"contract_number").toString())
}
}
}catch (Exception e) { e.printStackTrace(); }