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(); 
 }