Example Application
The sample code shown below illustrates how to use the C++ ASCII version API.
try{
//Create Server
SmartPointer<Server> server =new Server();
//Set server connection properties
server->setConnectionProperty(Server::HOST, "localhost");
server->setConnectionProperty(Server::PORT, "10119");
server->setConnectionProperty(Server::CONNECTION_TYPE , "SOCKET");
server->setConnectionProperty(Server::ACCOUNT_ID, "guest");
server->setConnectionProperty(Server::ACCOUNT_PASSWORD, "");
//Connect to server
server->connect();
//Get Service From Server
SmartPointer<Service> service = server- >getService("ValidateAddress");
//Create Input Message
SmartPointer<Message> request = new Message();
//Fill DataTable in the input message
SmartPointer<DataTable> dataTable = request->getDataTable();
SmartPointer<DataRow> row1 = dataTable->newRow();
row1->set("AddressLine1", "4200 Parliament Place") ;
row1->set("City", "Lanham");
row1->set("StateProvince", "Maryland");
dataTable->addRow(row1);
SmartPointer<DataRow> row2 = dataTable->newRow();
row2->set("AddressLine1", "100 Congress");
row2->set("City", "Austin");
row2->set("StateProvince", "Texas");
dataTable->addRow(row2);
//Set"option" Properties to the Input Message
request->putOption("OutputCasing", "M");
request->putOption("OutputRecordType", "A");
//Process Input Message, return output Message
SmartPointer<Message> reply = service->process(request);
//Disconnect from server
server->disconnect();
//Get the result from the resonse message
SmartPointer<DataTable> returnDataTable = reply->getDataTable();
vector<string> columnName = returnDataTable- >getColumnNames();
vector< SmartPointer<DataRow> >::iterator iter = returnDataTable->iterator();
for (int i=0; i< returnDataTable->getRowCount(); i++, iter++)
{
SmartPointer<DataRow> dataRow = *iter;
for (int col = 0; col < returnDataTable->getColumnCount(); col++)
{
const char* value = dataRow->get(columnName[col].c_str());
cout << value << "\n";
}
}
}catch(Exception e)
{
cout << "Error Occurred, " << e.getErrorMessage();
}
The sample code shown below illustrates how to use the C++ Unicode version API.
try{
//Create Server
SmartPointer<Server> server =new Server();
//Set server connection properties
server->setConnectionProperty(Server::HOST,"localhost");
server->setConnectionProperty(Server::PORT, "10119");
server->setConnectionProperty(Server::CONNECTION_TYPE , "SOCKET");
server->setConnectionProperty(Server::ACCOUNT_ID, "guest");
server->setConnectionProperty(Server::ACCOUNT_PASSWORD, "");
//Connect to server
server->connect();
//Get Service From Server
//NOTE: ValidateAddress does not support unicode, but supports
//characters in Canadian address and International address data files.
SmartPointer<Service> service = server- >getService("ValidateAddress");
//Create Input Message
SmartPointer<Message> request = new Message();
//Fill DataTable in the input message
SmartPointer<DataTable> dataTable = request->getDataTable();
dataTable->addColumn("AddressLine1");
dataTable->addColumn("City");
dataTable->addColumn("PostalCode");
dataTable->addColumn("Country");
SmartPointer<DataRow> row1 = dataTable->newRow();
UnicodeString address1 = "74, Rue Octave Bénard";
row1->set( 0 , address1);
UnicodeString city1 = "Etang-Salé-les-Bains";
row1->set( 1 , city1);
UnicodeString postalCode1 = "97427";
row1->set( 2 , postalCode1);
UnicodeString country1 = "Reunion Island";
row1->set( 3 , country1);
dataTable->addRow(row1);
SmartPointer<DataRow> row2 = dataTable->newRow();
UnicodeString address2 = "Final Av. Panteón Foro Libertador";
row2->set( 0 , address2);
UnicodeString city2 = "Caracas";
row2->set( 1 , city2);
UnicodeString postalCode2 = "1010";
row2->set( 2 , postalCode2);
UnicodeString country2 = "Venezuela";
row2->set( 3 , country2);
dataTable->addRow(row2);
//Set"option" Properties to the Input Message
request->putOption("OutputCasing", "M");
request->putOption("OutputRecordType", "A");
//Process Input Message, return output Message
SmartPointer<Message> reply = service->process(request);
//Disconnect from server
server->disconnect();
//Get the result from the resonse message
SmartPointer<DataTable> returnDataTable = reply->getDataTable();
vector<UnicodeString> columnName = returnDataTable- >getColumnNames();
vector< SmartPointer<DataRow> >::iterator iter = returnDataTable- >iterator();
for (int i=0; i< returnDataTable->getRowCount(); i++, iter++)
{
SmartPointer<DataRow> dataRow = *iter;
for (int col = 0; col < returnDataTable->getColumnCount(); col++)
{
UnicodeString value = dataRow->get(columnName[col]);
wcout <<value.getTerminatedBuffer() <<"\n"; }
}
}catch(Exception e)
{
UnicodeString error = e.getErrorMessage() ;
wcout << error.getTerminatedBuffer();
}