Cet exemple montre comment créer un client SOAP sur base du framework .net 2.0 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.
Afin de pouvoir utiliser un web service, il faut, dans Visual Studio, ajouter une référence web. Cela se fait via un clic-droit sur "Références" et sélection de "Ajouter une référence web". Dans la zone URL, il faut saisir http://testws.mercator.eu/MercatorWebService.asmx (adaptée en fonction de votre domaine). Dans notre exemple, nous avons adapté le "Nom de la référence Web" en "MercatorWebService20"

Note : pour information : si le développement du client est basé sur le framework .net 3.5 ou ultérieur, mais qu'on souhaite utiliser la technologie web client du framework 2.0, il faut procéder comme suit :
-
clic-droit sur "Références" / Ajouter une référence de service
-
Cliquer sur le bouton "Avancé"
-
Cliquer sur le bouton "Ajouter une référence Web"
-
Poursuivre comme indiqué ci-dessus
Créer une facture dans le journal 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);
Obtenir une dataTable contenant le premier 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];