Sample code for 30+ languages & platforms
Java

UPS Tracking API

See more HTTP Misc Examples

Demonstrates making a call to the UPS tracking REST API. Parses the tracking response and extracts the base64 signature image to a gif file.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.BinData;
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.Http;
import com.chilkatsoft.chilkat2.HttpResponse;
import com.chilkatsoft.chilkat2.JsonObject;
import com.chilkatsoft.chilkat2.StringBuilder;

public class ChilkatExample {

    public static void main(String[] args) {
        // This example requires the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        Http http = new Http();

        // This is the testing endpoint for the tracking API:
        String url = "https://wwwcie.ups.com/rest/Track";

        // Send an HTTP request with the following JSON body:

        // {
        //   "UPSSecurity": {
        //     "UsernameToken": {
        //       "Username": "Your Username",
        //       "Password": "Your Password"
        //     },
        //     "ServiceAccessToken": {
        //       "AccessLicenseNumber": "Your Access License Number"
        //     }
        //   },
        //   "TrackRequest": {
        //     "Request": {
        //       "RequestOption": "1",
        //       "TransactionReference": {
        //         "CustomerContext": "Your Test Case Summary Description"
        //       }
        //     },
        //     "InquiryNumber": "YourTrackingNumber"
        //   }
        // }
        //

        // Build the above JSON.
        JsonObject json = new JsonObject();
        json.updateString("UPSSecurity.UsernameToken.Username", "UPS_USERNAME");
        json.updateString("UPSSecurity.UsernameToken.Password", "UPS_PASSWORD");
        json.updateString("UPSSecurity.ServiceAccessToken.AccessLicenseNumber", "UPS_ACCESS_KEY");
        // Request all activity...
        json.updateString("TrackRequest.Request.RequestOption", "activity");
        json.updateString("TrackRequest.Request.TransactionReference.CustomerContext", "Your Test Case Summary Description");
        json.updateString("TrackRequest.InquiryNumber", "1Z12345E0205271688");

        StringBuilder sb = new StringBuilder();
        HttpResponse resp = new HttpResponse();
        try {
            http.httpJson("POST", url, json, "application/json", resp);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        System.out.println("status = " + resp.getStatusCode());

        // A 200 response status indicate success.
        if (resp.getStatusCode() != 200) {
            System.out.println(resp.getBodyStr());
            System.out.println("Failed.");
            return;
        }

        json.load(resp.getBodyStr());
        json.setEmitCompact(false);
        System.out.println(json.emit());

        // {
        //   "TrackResponse": {
        //     "Response": {
        //       "ResponseStatus": {
        //         "Code": "1",
        //         "Description": "Success"
        //       },
        //       "TransactionReference": {
        //         "CustomerContext": "Your Test Case Summary Description"
        //       }
        //     },
        //     "Shipment": {
        //       "InquiryNumber": {
        //         "Code": "01",
        //         "Description": "ShipmentIdentificationNumber",
        //         "Value": "1Z12345E0205271688"
        //       },
        //       "ShipmentType": {
        //         "Code": "01",
        //         "Description": "Small Package"
        //       },
        //       "ShipperNumber": "12345E",
        //       "Service": {
        //         "Code": "002",
        //         "Description": "2ND DAY AIR"
        //       },
        //       "ReferenceNumber": {
        //         "Code": "01",
        //         "Value": "LINE4AND115"
        //       },
        //       "PickupDate": "19990608",
        //       "Package": {
        //         "TrackingNumber": "1Z12345E0205271688",
        //         "Activity": [
        //           {
        //             "ActivityLocation": {
        //               "Address": {
        //                 "City": "ANYTOWN",
        //                 "StateProvinceCode": "GA",
        //
        //                 "PostalCode": "30340",
        //                 "CountryCode": "US"
        //               },
        //               "Code": "ML",
        //               "Description": "BACK DOOR",
        //               "SignedForByName": "JOHN DOE"
        //             },
        //             "Status": {
        //               "Type": "D",
        //               "Description": "DELIVERED",
        //               "Code": "KM"
        //             },
        //             "Date": "19990610",
        //             "Time": "120000",
        //             "Document": {
        //               "Type": {
        //                 "Code": "01",
        //                 "Description": "Signature Image"
        //               },
        //               "Content": "R0lGODdhoA ... JU9Y8RdHsRKLMVJ4MVDMREAAADs=",
        //               "Format": {
        //                 "Code": "01",
        //                 "Description": "GIF"
        //               }
        //             }
        //           },
        //           {
        //             "Status": {
        //               "Type": "M",
        //               "Description": "BILLING INFORMATION RECEIVED. SHIPMENT DATE PENDING.",
        //               "Code": "MP"
        //             },
        //             "Date": "19990608",
        //             "Time": "120000"
        //           }
        //         ],
        //         "PackageWeight": {
        //           "UnitOfMeasurement": {
        //             "Code": "LBS"
        //           },
        //           "Weight": "5.00"
        //         },
        //         "ReferenceNumber": [
        //           {
        //             "Code": "01",
        //             "Value": "LINE4AND115"
        //           },
        //           {
        //             "Code": "08",
        //             "Value": "LJ67Y5"
        //           }
        //         ]
        //       }
        //     },
        //     "Disclaimer": "You are using UPS tracking service on customer integration test environment, please switch to UPS production environment once you finish the test. The URL is https://onlinetools.ups.com/webservices/Track"
        //   }
        // }

        // Use the online tool at Generate JSON Parsing Code
        // to generate JSON parsing code.

        String statusCode = json.stringOf("TrackResponse.Response.ResponseStatus.Code");
        String statusDescription = json.stringOf("TrackResponse.Response.ResponseStatus.Description");
        System.out.println("statusCode: " + statusCode);
        System.out.println("statusDescription" + statusDescription);
        String customerContext = json.stringOf("TrackResponse.Response.TransactionReference.CustomerContext");
        String inquiryNumberCode = json.stringOf("TrackResponse.Shipment.InquiryNumber.Code");
        String inquiryNumberDescription = json.stringOf("TrackResponse.Shipment.InquiryNumber.Description");
        String inquiryNumberValue = json.stringOf("TrackResponse.Shipment.InquiryNumber.Value");
        String shipmentTypeCode = json.stringOf("TrackResponse.Shipment.ShipmentType.Code");
        String shipmentTypeDescription = json.stringOf("TrackResponse.Shipment.ShipmentType.Description");
        String shipperNumber = json.stringOf("TrackResponse.Shipment.ShipperNumber");
        String serviceCode = json.stringOf("TrackResponse.Shipment.Service.Code");
        String serviceDescription = json.stringOf("TrackResponse.Shipment.Service.Description");
        String referenceNumberCode = json.stringOf("TrackResponse.Shipment.ReferenceNumber.Code");
        String referenceNumberValue = json.stringOf("TrackResponse.Shipment.ReferenceNumber.Value");
        String pickupDate = json.stringOf("TrackResponse.Shipment.PickupDate");
        String trackingNumber = json.stringOf("TrackResponse.Shipment.Package.TrackingNumber");
        String unitOfMeasurementCode = json.stringOf("TrackResponse.Shipment.Package.PackageWeight.UnitOfMeasurement.Code");
        String weight = json.stringOf("TrackResponse.Shipment.Package.PackageWeight.Weight");
        String disclaimer = json.stringOf("TrackResponse.Disclaimer");

        int i = 0;
        int activityCount = json.sizeOfArray("TrackResponse.Shipment.Package.Activity");
        System.out.println("activityCount: " + activityCount);

        while (i < activityCount) {
            System.out.println("-- activity " + i);
            json.setI(i);
            if (json.hasMember("TrackResponse.Shipment.Package.Activity[i].ActivityLocation.Address.City")) {
                String city = json.stringOf("TrackResponse.Shipment.Package.Activity[i].ActivityLocation.Address.City");
                System.out.println("city: " + city);
                String provinceCode = json.stringOf("TrackResponse.Shipment.Package.Activity[i].ActivityLocation.Address.StateProvinceCode");
                String postalCode = json.stringOf("TrackResponse.Shipment.Package.Activity[i].ActivityLocation.Address.PostalCode");
                String countryCode = json.stringOf("TrackResponse.Shipment.Package.Activity[i].ActivityLocation.Address.CountryCode");
            }

            String locationCode = json.stringOf("TrackResponse.Shipment.Package.Activity[i].ActivityLocation.Code");
            String locationDescription = json.stringOf("TrackResponse.Shipment.Package.Activity[i].ActivityLocation.Description");
            String locationSignedForByName = json.stringOf("TrackResponse.Shipment.Package.Activity[i].ActivityLocation.SignedForByName");

            String activityStatusType = json.stringOf("TrackResponse.Shipment.Package.Activity[i].Status.Type");
            System.out.println("activityStatusType: " + activityStatusType);
            String activityStatusDescription = json.stringOf("TrackResponse.Shipment.Package.Activity[i].Status.Description");
            System.out.println("activityStatusDescription: " + activityStatusDescription);
            String activityStatusCode = json.stringOf("TrackResponse.Shipment.Package.Activity[i].Status.Code");
            System.out.println("activityStatusCode: " + activityStatusCode);

            String activityDate = json.stringOf("TrackResponse.Shipment.Package.Activity[i].Date");
            String activityTime = json.stringOf("TrackResponse.Shipment.Package.Activity[i].Time");

            if (json.hasMember("TrackResponse.Shipment.Package.Activity[i].Document")) {
                int typeCode = json.intOf("TrackResponse.Shipment.Package.Activity[i].Document.Type.Code");
                String typeDescription = json.stringOf("TrackResponse.Shipment.Package.Activity[i].Document.Type.Description");
                String documentContent = json.stringOf("TrackResponse.Shipment.Package.Activity[i].Document.Content");
                String documentFormatCode = json.stringOf("TrackResponse.Shipment.Package.Activity[i].Document.Format.Code");
                // Format description would be something like "GIF" for a signature image.
                String documentFormatDescription = json.stringOf("TrackResponse.Shipment.Package.Activity[i].Document.Format.Description");

                // 01 - Signature Image
                // 02 - Delivery Receipt
                // 03 - Free Astray
                // 04 - POD
                if (typeCode == 1) {
                    // We have a signature image.  Get the image data and save to a file.
                    StringBuilder sbImagePath = new StringBuilder();
                    sbImagePath.append("qa_output/sig_");
                    sbImagePath.append(trackingNumber);
                    sbImagePath.append(".");
                    sbImagePath.append(documentFormatDescription);
                    BinData imageData = new BinData();
                    imageData.appendEncoded(documentContent, "base64");
                    // Write to "qa_output/sig_1Z12345E0205271688.GIF"
                    imageData.writeFile(sbImagePath.getAsString());
                }
            }

            i = i + 1;
        }

        i = 0;
        int refnumCount = json.sizeOfArray("TrackResponse.Shipment.Package.ReferenceNumber");
        while (i < refnumCount) {
            json.setI(i);
            String refnumCode = json.stringOf("TrackResponse.Shipment.Package.ReferenceNumber[i].Code");
            String refnumValue = json.stringOf("TrackResponse.Shipment.Package.ReferenceNumber[i].Value");
            i = i + 1;
        }

        System.out.println("Success.");
    }
}