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