Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Client de MercatorWebService sur base de Java

0000002267     -      31/07/2016

Cet exemple montre comment créer un client SOAP à partir d'un client écrit en Java et utilisant MercatorWebService. Cet exemple est soumis aux réserves suivantes :

  • il est fourni "as is" et sans support
  • il convient d'y ajouter une gestion des exceptions (try catch) afin de gérer les cas où le web service n'est pas ou plus disponible.

La première étape afin de pouvoir utiliser MercatorWebService au départ d'un client écrit en Java est de générer un stub, çàd un ensemble de classes de liaison vers le web service. Ceci peut être fait grâce à l'utilitaire wsimport fourni dans le JDK (Java Development Kit). Pour cela, il faut :

  • sauvegarder le contenu de http://testws.mercator.eu/MercatorWebService.asmx?wsdl (url adaptée en fonction de votre domaine) dans un fichier local
     
  • retirer le première ligne commençant par <?xml
     
  • exécuter wsimport.exe -p MercatorWebService -keep -XadditionalHeaders -Xnocompile C:\Test\java\MercatorWebService.wsdl où C:\Test\java\MercatorWebService.wsdl doit être remplacé par le chemin vers le fichier wsdl produit au préalable.

Note : Si, lors de la création du stub, vous recevez cette erreur, " Impossible de résoudre le nom 's:schema' ", c'est que vous utilisez la version .net du WebService et non la version avec types simplifiés. Cette version se trouve dans MercatorWebSericeSimpl.zip. (Un client web Java ne peut recevoir des retours sous forme de DataTable ou DataSet .net) Après changement de version du web service, n'oubliez pas de regénérer un nouveau fichier wsdl.

 


 

Créer une facture dans le journal Factu :

Le projet complet réalisé en Eclipse est disponible dans le fichier zip ci-joint.

 

 

 

import java.io.UnsupportedEncodingException; 
import java.security.MessageDigest; 
import java.security.NoSuchAlgorithmException; 
import java.text.SimpleDateFormat;
import java.util.Calendar;


public class testMercatorWebService {

	public static void main(String[] args) {
		MercatorWebService.MercatorWebService service = new MercatorWebService.MercatorWebService();
		
		MercatorWebService.SecurityInfo si = new MercatorWebService.SecurityInfo();
		String sha1 = ...;
		si.setSecureKey(sha1);
		
		MercatorWebService.MercatorWebServiceSoap client = service.getMercatorWebServiceSoap();
		MercatorWebService.StringMws s = client.billingEngineInitNew(MercatorWebService.TypeVAEnum.V, 1, "Factu", si);
		if (s.getLastError() != null)
		{
			System.out.println("BillingEngineInitNew : " + s.getLastError());
			return;
		}
		// à partir d'ici, il est obligatoire d'appeler la méthode BillingEngineClose
        	String uniqueId = s.getValue();
        	MercatorWebService.BooleanMws b = client.billingEngineApplyCustomerSupplier(uniqueId, "INEO52209");
        	if (b.getLastError() != null)
        	{
        		System.out.println("ApplyCustomerSupplier : " + b.getLastError());
        	}
        	else
        	{
            		MercatorWebService.Int32Mws i = client.billingEngineAppendLine(uniqueId);
            		if (i.getLastError() != null)
            		{
            			System.out.println("BillingEngineAppendLine : " + i.getLastError());
            		}
            		else
            		{
                		b = client.billingEngineInsertItem2(uniqueId, "03102001", i.getValue(), 5); // q = 5
                		if (b.getLastError() != null)
                		{
                			System.out.println("InsertItem : " + b.getLastError());
                		}
                		else
                		{
                    			b = client.billingEngineUpdateAmounts(uniqueId);
                    			if (b.getLastError() != null)
                    			{
                    				System.out.println("BillingEngineUpdateAmounts : " + b.getLastError());
                    			}
                    			else
                    			{
                        			b = client.billingEngineSave(uniqueId);
                        			if (b.getLastError() != null)
                        			{
                        				System.out.println("BillingEngineSave : " + b.getLastError());
                        			}
                        			else
                        			{
                            			MercatorWebService.Int64Mws p = client.billingEngineSavedNumber(uniqueId);
                            			if (p.getLastError() != null)
                            				System.out.println("BillingEngineSavedNumber : " + p.getLastError());
                            			else
                            				System.out.println(String.format("La vente %s %s a été créée !", "Factu", p.getValue()));
                        			}
                    			}
                		}
            		}
        	}
        	MercatorWebService.VoidMws v = client.billingEngineClose(uniqueId); // toujours terminer par BillingEngineClose() après un InitNew fructueux
        	if (v.getLastError() != null)
        		System.out.println("BillingEngineClose : " + v.getLastError());
	}
	
	
	private static String SHA1(String str) {
	    MessageDigest digest = null;
	    byte[] input = null;

	    try {
	      digest = MessageDigest.getInstance("SHA-1");
	      digest.reset();
	      input = digest.digest(str.getBytes("UTF-8"));

	    } catch (NoSuchAlgorithmException e1) {
	      e1.printStackTrace();
	    } catch (UnsupportedEncodingException e) {
	      e.printStackTrace();
	    }
	    return convertToHex(input);
	  }
	
	private static String convertToHex(byte[] data) { 
          StringBuffer buf = new StringBuffer();
          for (int i = 0; i < data.length; i++) { 
            int halfbyte = (data[i] >>> 4) & 0x0F;
            int two_halfs = 0;
            do { 
                if ((0 <= halfbyte) && (halfbyte <= 9)) 
                    buf.append((char) ('0' + halfbyte));
                else 
                    buf.append((char) ('a' + (halfbyte - 10)));
                halfbyte = data[i] & 0x0F;
            } while(two_halfs++ < 1);
        } 
        return buf.toString();
    } 

}


A télécharger : 0000002267.zip (453 Kb - 22/11/2013)