Dit voorbeeld toont hoe je een SOAP client aanmaakt vertrekend uit een client die geschreven is in Java en gebruik maakt van MercatorWebService. Dit voorbeeld is onderworpen aan volgende regels:
- Het is geleverd als 'as-is' en zonder support
- Het moet voorzien zijn van exception-handling (try-catch-finally) om te voorkomen dat de webservice niet beschikbaar zou zijn.
De eerste stap vooraleer de MercatorWebservice te kunnen gebruiken vertrekkend uit een Java-client is het genereren van een stub, dit wil zeggen een reeks bindende klassen gekoppeld aan de webservice. Dit kan gedaan worden dankzij de tool wsimport geleverd in de JDK (Java Development Kit). Hiervoor moet men:
-
het vervolg van http://testws.mercator.eu/MercatorWebService.asmx?wsdl bewaren (url toegepast in functie van uw domein) in een lokaal bestand
-
e eerste lijn beginnend met
-
wsimport.exe -p MercatorWebService -keep -XadditionalHeaders -Xnocompile uitvoeren C:\Test\java\MercatorWebService.wsdl of C:\Test\java\MercatorWebService.wsdl moet vervangen worden door het pad naar het wsdl-bestand van het eerste product.
Opmerking:Indien je deze error "Impossible de résoudre le nom 's:schema'" ontvangt bij het aanmaken van de stub, is het omdat je de .NET-versie van de WebService gebruikt en niet de versie van de vereenvoudigde standaard. Deze versie bevindt zich in MercatorWebSericeSimpl.zip. (Een Java-webclient kan geen reply's ontvangen in de vorm van DataTable of DataSet .net) Vergeet geen nieuw wsdl bestand te genereren na een versieverandering van de webservice.
Maak een factuur in het Factu-journal :
Het volledige project gemaakt in Eclipse is beschikbaar in bijgevoegd zip-bestand.
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();
}
}
Te laden :
0000002267.zip (453 Kb - 22-11-2013)