Dit voorbeeld toont hoe je een SOAP-client kan aanmaken op basis van het .NET-Framework 2.0 en gebruikmakend van MercatorWebService. Dit voorbeeld is onderworpen aan volgende regels:
- Het wordt geleverd als "as-is" en zonder ondersteuning
- Het moet exception-handling (try-catch-finally) bevatten, om te voorkomen dat de webservice niet meer beschikbaar kan zijn.
Vooraleer je een webservice kan gebruiken, moet men, in Visual Studio verwijzen naar de service. Dit kan gedaan worden via rechtsklik op "References" en selecteer "Add reference". In de zone "Adres", moet men het volgende invullen http://testws.mercator.eu/MercatorWebService.asmx (aan te passen in functie van uw domein). In ons voorbeeld hebben we de namespace aangepast naar "MercatorWebService20".
Opmerking: Indien de ontwikkeling van de client gebaseerd is op .NET-Framework 3.5 of hoger, maar men de webclient-technology van .NET-Framework 2.0 wenst te gebruiken, moet men volgende stappen volgen:
-
Rechtsklik op "References" -> "Add service-reference"
-
Klik op de knop "Geavanceerd"
-
Klik op de knop "Add web-reference"
-
Volgen zoals hieronder aangegeven
Maak een factuur aan in het journaal Factu:
MercatorWebService20.MercatorWebService client = new MercatorWebService20.MercatorWebService();
MercatorWebService20.SecurityInfo si = new MercatorWebService20.SecurityInfo();
si.SecureKey = ... ;
client.SecurityInfoValue = si;
MercatorWebService20.StringMws s = client.BillingEngineInitNew(MercatorWebService20.TypeVAEnum.V, 1, "Factu");
if (!string.IsNullOrEmpty(s.LastError))
{
MessageBox.Show("BillingEngineInitNew : " + s.LastError);
return;
}
// à partir d'ici, il est obligatoire d'appeler la méthode BillingEngineClose
string uniqueId = s.Value;
MercatorWebService20.BooleanMws b = client.BillingEngineApplyCustomerSupplier(uniqueId, "INEO52209");
if (!string.IsNullOrEmpty(b.LastError))
{
MessageBox.Show("ApplyCustomerSupplier : " + b.LastError);
}
else
{
MercatorWebService20.Int32Mws i = client.BillingEngineAppendLine(uniqueId);
if (!string.IsNullOrEmpty(i.LastError))
{
MessageBox.Show("BillingEngineAppendLine : " + i.LastError);
}
else
{
b = client.BillingEngineInsertItem2(uniqueId, "03102001", i.Value, 5); // q = 5
if (!string.IsNullOrEmpty(b.LastError))
{
MessageBox.Show("InsertItem : " + b.LastError);
}
else
{
b = client.BillingEngineUpdateAmounts(uniqueId);
if (!string.IsNullOrEmpty(b.LastError))
{
MessageBox.Show("BillingEngineUpdateAmounts : " + b.LastError);
}
else
{
b = client.BillingEngineSave(uniqueId);
if (!string.IsNullOrEmpty(b.LastError))
{
MessageBox.Show("BillingEngineSave : " + b.LastError);
}
else
{
MercatorWebService20.Int64Mws p = client.BillingEngineSavedNumber(uniqueId);
if (!string.IsNullOrEmpty(p.LastError))
MessageBox.Show("BillingEngineSavedNumber : " + p.LastError);
else
MessageBox.Show(string.Format("La vente {0} {1} a été créée !", "Factu", p.Value));
}
}
}
}
}
MercatorWebService20.VoidMws v = client.BillingEngineClose(uniqueId); // toujours terminer par BillingEngineClose() après un InitNew fructueux
if (!string.IsNullOrEmpty(v.LastError))
MessageBox.Show("BillingEngineClose : " + v.LastError);
Ontvang een DataTable met hierin de eerste client:
MercatorWebService20.MercatorWebService client = new MercatorWebService20.MercatorWebService();
MercatorWebService20.SecurityInfo si = new MercatorWebService20.SecurityInfo();
si.SecureKey = ... ;
client.SecurityInfoValue = si;
MercatorWebService20.DataSetMws ds = client.Zselect("select top 1 * from cli");
if (!string.IsNullOrEmpty(ds.LastError))
{
MessageBox.Show("Zselect : " + ds.LastError);
return;
}
DataTable dt_cli1 = ds.Value.Tables[0];