Sample code for 30+ languages & platforms
Java Requires Chilkat v11.0.0+

RDAP Domain Lookup using rdap.org

See more HTTP Misc Examples

Demonstrates doing an RDAP domain lookup using the rdap.org public RDAP server.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.Http;
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();

        // Send HTTP requests to https://rdap.org/<type>/<object>, where <type> is the object type (one of domain, ip, autnum, entity etc)
        // and <object> is the object identifier (eg example.com, 192.168.0.1, 64496, etc).

        // For example, here's a lookup for "oracle.com"
        StringBuilder sbResponse = new StringBuilder();
        try {
            http.quickGetSb("https://rdap.org/domain/oracle.com", sbResponse);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        int statusCode = http.getLastStatus();
        if (statusCode != 200) {
            System.out.println("Error response:");
            System.out.println(sbResponse.getAsString());
            System.out.println("status code: " + statusCode);
            return;
        }

        // Load the JSON response and examine..

        // Use this online tool to generate parsing code from sample JSON:
        // Generate Parsing Code from JSON

        JsonObject json = new JsonObject();
        json.loadSb(sbResponse);
        json.setEmitCompact(false);
        System.out.println(json.emit());

        // Here's a sample response, and the parsing code generated from the above online tool follows..

        // {
        //   "objectClassName": "domain",
        //   "handle": "607513_DOMAIN_COM-VRSN",
        //   "ldhName": "ORACLE.COM",
        //   "links": [
        //     {
        //       "value": "https:\/\/rdap.verisign.com\/com\/v1\/domain\/ORACLE.COM",
        //       "rel": "self",
        //       "href": "https:\/\/rdap.verisign.com\/com\/v1\/domain\/ORACLE.COM",
        //       "type": "application\/rdap+json"
        //     },
        //     {
        //       "value": "https:\/\/rdap.markmonitor.com\/rdap\/domain\/ORACLE.COM",
        //       "rel": "related",
        //       "href": "https:\/\/rdap.markmonitor.com\/rdap\/domain\/ORACLE.COM",
        //       "type": "application\/rdap+json"
        //     }
        //   ],
        //   "status": [
        //     "client delete prohibited",
        //     "client transfer prohibited",
        //     "client update prohibited",
        //     "server delete prohibited",
        //     "server transfer prohibited",
        //     "server update prohibited"
        //   ],
        //   "entities": [
        //     {
        //       "objectClassName": "entity",
        //       "handle": "292",
        //       "roles": [
        //         "registrar"
        //       ],
        //       "publicIds": [
        //         {
        //           "type": "IANA Registrar ID",
        //           "identifier": "292"
        //         }
        //       ],
        //       "vcardArray": [
        //         "vcard",
        //         [
        //           [
        //             "version",
        //             {},
        //             "text",
        //             "4.0"
        //           ],
        //           [
        //             "fn",
        //             {},
        //             "text",
        //             "MarkMonitor Inc."
        //           ]
        //         ]
        //       ],
        //       "entities": [
        //         {
        //           "objectClassName": "entity",
        //           "roles": [
        //             "abuse"
        //           ],
        //           "vcardArray": [
        //             "vcard",
        //             [
        //               [
        //                 "version",
        //                 {},
        //                 "text",
        //                 "4.0"
        //               ],
        //               [
        //                 "fn",
        //                 {},
        //                 "text",
        //                 ""
        //               ],
        //               [
        //                 "tel",
        //                 {
        //                   "type": "voice"
        //                 },
        //                 "uri",
        //                 "tel:+1.2086851750"
        //               ],
        //               [
        //                 "email",
        //                 {},
        //                 "text",
        //                 "abusecomplaints@markmonitor.com"
        //               ]
        //             ]
        //           ]
        //         }
        //       ]
        //     }
        //   ],
        //   "events": [
        //     {
        //       "eventAction": "registration",
        //       "eventDate": "1988-12-02T05:00:00Z"
        //     },
        //     {
        //       "eventAction": "expiration",
        //       "eventDate": "2025-12-01T05:00:00Z"
        //     },
        //     {
        //       "eventAction": "last changed",
        //       "eventDate": "2024-10-30T09:32:52Z"
        //     },
        //     {
        //       "eventAction": "last update of RDAP database",
        //       "eventDate": "2024-11-26T14:11:14Z"
        //     }
        //   ],
        //   "secureDNS": {
        //     "delegationSigned": false
        //   },
        //   "nameservers": [
        //     {
        //       "objectClassName": "nameserver",
        //       "ldhName": "A1-160.AKAM.NET"
        //     },
        //     {
        //       "objectClassName": "nameserver",
        //       "ldhName": "A11-66.AKAM.NET"
        //     },
        //     {
        //       "objectClassName": "nameserver",
        //       "ldhName": "A13-65.AKAM.NET"
        //     },
        //     {
        //       "objectClassName": "nameserver",
        //       "ldhName": "A18-67.AKAM.NET"
        //     },
        //     {
        //       "objectClassName": "nameserver",
        //       "ldhName": "NS1.P201.DNS.ORACLECLOUD.NET"
        //     },
        //     {
        //       "objectClassName": "nameserver",
        //       "ldhName": "NS2.P201.DNS.ORACLECLOUD.NET"
        //     },
        //     {
        //       "objectClassName": "nameserver",
        //       "ldhName": "NS3.P201.DNS.ORACLECLOUD.NET"
        //     },
        //     {
        //       "objectClassName": "nameserver",
        //       "ldhName": "NS4.P201.DNS.ORACLECLOUD.NET"
        //     }
        //   ],
        //   "rdapConformance": [
        //     "rdap_level_0",
        //     "icann_rdap_technical_implementation_guide_0",
        //     "icann_rdap_response_profile_0"
        //   ],
        //   "notices": [
        //     {
        //       "title": "Terms of Use",
        //       "description": [
        //         "Service subject to Terms of Use."
        //       ],
        //       "links": [
        //         {
        //           "href": "https:\/\/www.verisign.com\/domain-names\/registration-data-access-protocol\/terms-service\/index.xhtml",
        //           "type": "text\/html"
        //         }
        //       ]
        //     },
        //     {
        //       "title": "Status Codes",
        //       "description": [
        //         "For more information on domain status codes, please visit https:\/\/icann.org\/epp"
        //       ],
        //       "links": [
        //         {
        //           "href": "https:\/\/icann.org\/epp",
        //           "type": "text\/html"
        //         }
        //       ]
        //     },
        //     {
        //       "title": "RDDS Inaccuracy Complaint Form",
        //       "description": [
        //         "URL of the ICANN RDDS Inaccuracy Complaint Form: https:\/\/icann.org\/wicf"
        //       ],
        //       "links": [
        //         {
        //           "href": "https:\/\/icann.org\/wicf",
        //           "type": "text\/html"
        //         }
        //       ]
        //     }
        //   ]
        // }

        String value = "";
        String rel = "";
        String href = "";
        String v_type = "";
        String strVal = "";
        int j = 0;
        int count_j = 0;
        String identifier = "";
        int k = 0;
        int count_k = 0;
        JsonObject json1 = new JsonObject();
        int i1 = 0;
        int count_i1 = 0;
        int j1 = 0;
        int count_j1 = 0;
        String eventAction = "";
        String eventDate = "";
        String title = "";

        String objectClassName = json.stringOf("objectClassName");
        String handle = json.stringOf("handle");
        String ldhName = json.stringOf("ldhName");
        boolean DelegationSigned = json.boolOf("secureDNS.delegationSigned");
        int i = 0;
        int count_i = json.sizeOfArray("links");
        while (i < count_i) {
            json.setI(i);
            value = json.stringOf("links[i].value");
            rel = json.stringOf("links[i].rel");
            href = json.stringOf("links[i].href");
            v_type = json.stringOf("links[i].type");
            i = i + 1;
        }

        i = 0;
        count_i = json.sizeOfArray("status");
        while (i < count_i) {
            json.setI(i);
            strVal = json.stringOf("status[i]");
            i = i + 1;
        }

        i = 0;
        count_i = json.sizeOfArray("entities");
        while (i < count_i) {
            json.setI(i);
            objectClassName = json.stringOf("entities[i].objectClassName");
            handle = json.stringOf("entities[i].handle");
            j = 0;
            count_j = json.sizeOfArray("entities[i].roles");
            while (j < count_j) {
                json.setJ(j);
                strVal = json.stringOf("entities[i].roles[j]");
                j = j + 1;
            }

            j = 0;
            count_j = json.sizeOfArray("entities[i].publicIds");
            while (j < count_j) {
                json.setJ(j);
                v_type = json.stringOf("entities[i].publicIds[j].type");
                identifier = json.stringOf("entities[i].publicIds[j].identifier");
                j = j + 1;
            }

            j = 0;
            count_j = json.sizeOfArray("entities[i].vcardArray");
            while (j < count_j) {
                json.setJ(j);
                strVal = json.stringOf("entities[i].vcardArray[j]");
                k = 0;
                count_k = json.sizeOfArray("entities[i].vcardArray[j]");
                while (k < count_k) {
                    json.setK(k);
                    json.objectOf2("entities[i].vcardArray[j][k]", json1);

                    i1 = 0;
                    count_i1 = json1.sizeOfArray("");
                    while (i1 < count_i1) {
                        json1.setI(i1);
                        strVal = json1.stringOf("[i]");
                        i1 = i1 + 1;
                    }

                    k = k + 1;
                }

                j = j + 1;
            }

            j = 0;
            count_j = json.sizeOfArray("entities[i].entities");
            while (j < count_j) {
                json.setJ(j);
                objectClassName = json.stringOf("entities[i].entities[j].objectClassName");
                k = 0;
                count_k = json.sizeOfArray("entities[i].entities[j].roles");
                while (k < count_k) {
                    json.setK(k);
                    strVal = json.stringOf("entities[i].entities[j].roles[k]");
                    k = k + 1;
                }

                k = 0;
                count_k = json.sizeOfArray("entities[i].entities[j].vcardArray");
                while (k < count_k) {
                    json.setK(k);
                    strVal = json.stringOf("entities[i].entities[j].vcardArray[k]");
                    json.objectOf2("entities[i].entities[j].vcardArray[k]", json1);

                    i1 = 0;
                    count_i1 = json1.sizeOfArray("");
                    while (i1 < count_i1) {
                        json1.setI(i1);
                        j1 = 0;
                        count_j1 = json1.sizeOfArray("[i]");
                        while (j1 < count_j1) {
                            json1.setJ(j1);
                            strVal = json1.stringOf("[i][j]");
                            j1 = j1 + 1;
                        }

                        i1 = i1 + 1;
                    }

                    k = k + 1;
                }

                j = j + 1;
            }

            i = i + 1;
        }

        i = 0;
        count_i = json.sizeOfArray("events");
        while (i < count_i) {
            json.setI(i);
            eventAction = json.stringOf("events[i].eventAction");
            eventDate = json.stringOf("events[i].eventDate");
            i = i + 1;
        }

        i = 0;
        count_i = json.sizeOfArray("nameservers");
        while (i < count_i) {
            json.setI(i);
            objectClassName = json.stringOf("nameservers[i].objectClassName");
            ldhName = json.stringOf("nameservers[i].ldhName");
            i = i + 1;
        }

        i = 0;
        count_i = json.sizeOfArray("rdapConformance");
        while (i < count_i) {
            json.setI(i);
            strVal = json.stringOf("rdapConformance[i]");
            i = i + 1;
        }

        i = 0;
        count_i = json.sizeOfArray("notices");
        while (i < count_i) {
            json.setI(i);
            title = json.stringOf("notices[i].title");
            j = 0;
            count_j = json.sizeOfArray("notices[i].description");
            while (j < count_j) {
                json.setJ(j);
                strVal = json.stringOf("notices[i].description[j]");
                j = j + 1;
            }

            j = 0;
            count_j = json.sizeOfArray("notices[i].links");
            while (j < count_j) {
                json.setJ(j);
                href = json.stringOf("notices[i].links[j].href");
                v_type = json.stringOf("notices[i].links[j].type");
                j = j + 1;
            }

            i = i + 1;
        }
    }
}