NormSaaS est une solution en ligne de normalisation d’adresse postale qui utilise le format d’échange standard SOAP.
Ce WebService se réfère à une API afin d’envoyer et recevoir les adresses à traiter.
NormSaas est utilisé dans le cadre d’opérations de marketing direct, de Gestion de la Relation Client (Customer Relationship Management) ou encore de gestion commerciale (organisation de tournées ou de livraison).
La société X a besoin d’envoyer 5000 catalogues sur une nouvelle base clients et souhaite optimiser l’envoi des PND.
Dans ce cadre-là, elle a besoin de normaliser cette nouvelle base.
L’équipe informatique de la société X peut très rapidement analyser chaque adresse de ce fichier en utilisant les outils mis à disposition par NormSaaS.
L’exemple ci-dessous illustre une méthode pour générer automatiquement les classes du Web Service :
java -classpath "/lib/tools.jar" com.sun.tools.internal.ws.WsImport -p -s https://www.normsaas.fr/addressProcessing/soap/v1.1/addressProcessor?wsdl
Le service web peut être consommé par un client Java par l'intermédiaire de classes générées par les outils de l'API JAX-WS. Pour générer automatiquement ces classes, il faut utiliser l'outil wsimport.
Il ne reste plus qu'à manipuler les classes générées comme dans l'exemple ci-après :
public class NSaaSCliSample {
public static void main(String[] args) throws NoSuchAlgorithmException,
UnsupportedEncodingException
{
N9AddressIn adrIn = new N9AddressIn();
N9AddressOut adrOut = new N9AddressOut();
// WebService ticket to use
String ticket = "ticketValue";
// WebService user name
String userName = "user@host.com";
// WebService password
String password = "passWord";
// Generate random nonce
SecureRandom random = new SecureRandom();
String nonce = new BigInteger(32, random).toString(32);
// Generate createdDate
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
String createdDate = dateFormat.format(date);
// Declare and initialize service call
AddressProcessorService adrEngineService = new
AddressProcessorService();
AddressProcessor adrEngine = adrEngineService.getAddressProcessorPort();
// Get data to process
adrIn.setLine3("");
adrIn.setPostCode("33160");
// Compute digest
String hashPass = SHA256(password);
String digest = SHA256(hashPass + nonce + createdDate);
// Call the Service
adrOut = adrEngine.processAddress(adrIn, userName, digest, nonce,
createdDate, ticket);
// Exploit this results
System.out.print("Return Code = " + adrOut.getReturnCode() + "\n");
}