DCHK Client Version 0.5.7 - Documentation |
![]() |
The following example shows how to implement a low level communication with a DCHK server by using only the irislwz_*-functions. This approach is most flexible and gives you the ability to test invalid combinations of flags or invalid XML. But it's also the most work.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdarg.h> #include <dchk.h> int main(int argc, char **argv) { int ret; // Define IRISLWZ_HANDLE IRISLWZ_HANDLE iris; // Assume first Parameter is the domain which should be checked const char *domain=argv[1]; // Initialize IRISLWZ_HANDLE irislwz_Init(&iris); // Set hostname and port irislwz_SetHost(&iris,"dchk.denic.de",715); // Set authority irislwz_SetAuthority(&iris,(const char*)"My Authority"); // Use compression irislwz_SendDeflated(&iris,1); irislwz_AcceptDeflated(&iris,1); // Set Timeout to 5 seconds irislwz_SetTimeout(&iris,5,0); // Check if connection is possible if (!irislwz_Connect(&iris)) { ret=irislwz_GetErrorCode(&iris); irislwz_PrintError(&iris); irislwz_Exit(&iris); return ret; } char *entityClass="domain-name"; // allocate memory for query char *query=(char*)malloc(1024); // build query sprintf(query,"<iris1:request xmlns:iris1=\"urn:ietf:params:xml:ns:iris1\">" "<iris1:searchSet>" "<iris1:lookupEntity registryType=\"dchk1\" entityClass=\"%s\" " "entityName=\"%s\"/>" "</iris1:searchSet>" "</iris1:request>",entityClass,domain); // Send request if (!irislwz_Query(&iris,query)) { free(query); ret=irislwz_GetErrorCode(&iris); irislwz_PrintError(&iris); irislwz_Exit(&iris); return ret; } free(query); // Print answer printf("%s\n",iris.response.beautified); irislwz_Exit(&iris); return 0; } // end
To compile the example with gcc, type:
gcc -I/usr/local/include -L/usr/local/lib example1.c -o example1 -ldchk -lxml2
You probably have to add or change the path statements on your environment.
When calling the compiled example with a domain name, you will get the following answer:
./example1 denic.de <?xml version="1.0" encoding="UTF-8"?> <iris1:response xmlns:iris1="urn:ietf:params:xml:ns:iris1"> <iris1:resultSet> <iris1:answer> <urn:domain xmlns:urn="urn:ietf:params:xml:ns:dchk1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" registryType="dchk1" entityClass="domain-name" entityName="denic.de" authority="de" xsi:type="urn:domainType"> <urn:domainName>denic.de</urn:domainName> <urn:status> <urn:active/> </urn:status> <urn:lastDatabaseUpdateDateTime>2008-06-10T09:45:00+02:00</urn:lastDatabaseUpdateDateTime> </urn:domain> </iris1:answer> </iris1:resultSet> </iris1:response>