Aplicación de ejemplo
El siguiente código de ejemplo muestra cómo usar la API C versión ASCII.
// Declarations
Server *server = NULL;
Message *request = NULL;
DataTable *dataTable = NULL;
Message *reply = NULL;
Service *service = NULL;
int nRet;
DataRow *row1 = NULL;
DataRow *row2 = NULL;
DataTable *returnDataTable= NULL;
char** columnNames;
DataRow** rows;
DataRow*dataRow;
int i;
int j;
char* value;
//Create Server
server = createServer();
//Set server connection properties
nRet = setConnectionProperty(server, SERVER_HOST, "localhost");
nRet = setConnectionProperty(server, SERVER_PORT, "10119 ");
nRet = setConnectionProperty(server, SERVER_CONNECTION_TYPE,"SOCKET");
nRet = setConnectionProperty(server, SERVER_ACCOUNT_ID,"guest");
nRet = setConnectionProperty(server, SERVER_ACCOUNT_PASSWORD,"");
//Connect to server
nRet = serverConnect(server);
if(nRet != SUCCESSFUL_RETURN)
{
printf( getErrorMessage(nRet));
// free memory
if(server)
nRet = deleteServer(server);
return ;
}
//Get Service From Server
service = getServiceFromServer(server,"ValidateAddress" );
//Create Input Message
request = createMessage();
//Fill DataTable in the input message
dataTable = getDataTable(request);
nRet= addColumn( dataTable, "AddressLine1", &nRet);
nRet= addColumn( dataTable, "City", &nRet);
nRet= addColumn( dataTable, "StateProvince", &nRet);
row1 = newRow( dataTable );
setByIndex (row1, 0 , "4200 Parliament Place");
setByIndex (row1, 1 ,"Lanham");
setByIndex (row1, 2 , "Maryland");
addRow( dataTable, row1);
row2 = newRow( dataTable );
setByIndex (row2, 0 , "10535 Boyer Blvd");
setByIndex (row2, 1 ,"Austin");
setByIndex (row2, 2 , "Texas");
addRow( dataTable, row2);
//Set"option" Properties to the Input Message
nRet = putOption(request, "OutputCasing","M");
nRet = putOption(request, "OutputRecordType","A");
//Process Input Message, return output Message
nRet = processMessage(service, request, &reply);
if(nRet != SUCCESSFUL_RETURN)
{
printf("Error Occurred, " );
printf(getErrorMessage(nRet));
// free memory
if(request)
nRet = deleteMessage(request);
if(reply)
nRet = deleteMessage(reply);
if(server)
nRet = deleteServer(server);
return ;
}
//Disconnect from server
nRet = serverDisconnect(server);
//Get the result from the response message
returnDataTable = getDataTable(reply );
columnNames = getColumnNames(returnDataTable);
rows = getDataRows( returnDataTable);
for( i=0; i < getRowCount( returnDataTable); i++)
{
dataRow = rows[i];
for(j=0; j < getColumnCount(returnDataTable); j++)
{
value = (char*)getByIndex( dataRow, j);
printf(value);
printf("\n");
}
}
//Free Memory
if(request)
nRet = deleteMessage(request);
if(reply)
nRet = deleteMessage(reply);
if(server)
nRet = deleteServer(server);
}
El siguiente código de ejemplo muestra cómo usar la API C versión Unicode. En este caso, la cadena es representada por UChar*(o unsigned short*), que es el tipo de 16 bits utilizado para representar la cadena de caracteres. ICU ofrece una función denominada u_charsToUChars, que convierte las cadenas de 8 bits en cadenas de 16 bits. Este ejemplo muestra cómo invocar una API C versión Unicode. Todos los caracteres de la cadena de entrada son ASCII, por lo que usamos u_charsToUChars para convertirla en una cadena de 16 bits. También es posible construir una cadena Unicode para pasarla directamente en la API C.
UChar* convertcharToUChar( char* name, UChar* value)
{
int lenName= strlen(name);
u_charsToUChars(name, value, lenName );
value[ lenName]=0;
return value;
}
// Declarations
Server *server = NULL;
Message *request = NULL;
DataTable *dataTable = NULL;
DataTable *returnDataTable= NULL;
Message *reply = NULL;
Service *service = NULL;
int nRet;
DataRow* newDataRow;
UChar name[128];
UChar value[128];
UChar** columnNames;
DataRow** rows;
DataRow* dataRow;
int i, j;
UChar* columnValue;
UChar* errorMsg;
//Create Server
server = createServer();
//Set server connection properties
setConnectionProperty(server, convertcharToUChar( SERVER_HOST, name) , convertcharToUChar( "localhost", value));
setConnectionProperty(server, convertcharToUChar( SERVER_PORT, name) , convertcharToUChar( "10119", value));
setConnectionProperty(server, convertcharToUChar( SERVER_CONNECTION_TYPE, name) , convertcharToUChar( "SOCKET", value));
setConnectionProperty(server, convertcharToUChar( SERVER_ACCOUNT_ID, name) , convertcharToUChar( "guest", value));
setConnectionProperty(server, convertcharToUChar( SERVER_ACCOUNT_PASSWORD, name) , convertcharToUChar( "", value));
//Connect to server
nRet = serverConnect(server);
if(nRet != SUCCESSFUL_RETURN)
{
// error handling
errorMsg = getErrorMessage(nRet);
// free memory
if(server)
nRet = deleteServer(server);
return ;
}
//Get Service From Server
service = getServiceFromServer(server,convertcharToUChar( "ValidateAddress", name));
//Create Input Message
request = createMessage();
//Fill DataTable in the input message
dataTable = getDataTable(request);
addColumn( dataTable,convertcharToUChar( "AddressLine1", name), &nRet);
addColumn( dataTable,convertcharToUChar( "City", name), &nRet);
addColumn( dataTable,convertcharToUChar( "PostalCode", name), &nRet);
addColumn( dataTable,convertcharToUChar( "StateProvince", name), &nRet);
newDataRow = newRow( dataTable );
setByIndex (newDataRow, 0 , convertcharToUChar( "74, Rue Octave Bénard", name) );
setByIndex (newDataRow, 1 , convertcharToUChar( "Etang-Salé-les- Bains", name) );
setByIndex (newDataRow, 2 , convertcharToUChar( "97427", name) );
setByIndex (newDataRow, 3 , convertcharToUChar( "Reunion Island", name) );
addRow( dataTable, newDataRow);
//Set"option" Properties to the Input Message
nRet = putOption(request, convertcharToUChar( "OutputCasing", name), convertcharToUChar( "M", value));
nRet = putOption(request, convertcharToUChar( "OutputRecordType", name), convertcharToUChar( "A", value));
//Process Input Message, return output Message
nRet = processMessage(service, request, &reply);
if(nRet != SUCCESSFUL_RETURN)
{
// error handling
errorMsg = getErrorMessage(nRet);
// free memory
if(request)
nRet = deleteMessage(request);
if(reply)
nRet = deleteMessage(reply);
if(server)
nRet = deleteServer(server);
return ;
}
//Disconnect from server
nRet = serverDisconnect(server);
//Get the result from the response message
returnDataTable = getDataTable(reply );
columnNames = getColumnNames(returnDataTable);
rows = getDataRows( dataTable);
for( i=0; i < getRowCount( dataTable); i++)
{
dataRow = rows[i];
for(j=0; j < getColumnCount(dataTable); j++)
{
columnValue = (UChar*)getByIndex( dataRow, j);
}
}
//Free Memory
if(request)
nRet = deleteMessage(request);
if(reply)
nRet = deleteMessage(reply);
if(server)
nRet = deleteServer(server);