Attacher un fichier à un XML WebService
02/09/2004
Par
Laurent Geffroy
Version PDF à télécharger
Code Source
Droit de diffusion:
L'ensemble ou partie de ce document ainsi que le code mis à disposition, ne peut être diffusé sur d'autres sites Web sans l'autorisation au préalable de son créateur.
Avant Propos :
WebServices. Microsoft n’a pas directement intégrer ces avancés dans le FrameWork 1.1 mais il est possible des les ajouter via le Microsoft WebService Enhancements (WSE 1.0). Une version 2.0 est disponible et doit fonctionner de la même façon.
Donc, pour suivre ce tutoriel, veuillez installer le WSE 1.0 sur la machine serveur et client.
Outre la sécurisation des échanges SOAP, WSE permet d’attacher un fichier au WebService
Dans ce tutoriel nous aborderons :
- Le développement du WebService
- La création d’une application Windows qui consommera le WebService
Et comme toujours, n’hésitez pas à télécharger et à utiliser les sources, elles sont libres d’usage
Sommaire:
1. Le WebService
2. Le client, consommateur du WebService
3. En Savoir plus
1. Le WebService
Ajoutez une nouvelle référence dans votre projet Web : Microsoft.Web.Services
Cette assembly est issue de l’installation du WSE 1.0.
Faites un using de ces 4 éléments. Utilisez Microsoft.Web.Services2 si vous êtes sur WSE 2.0.
Mon XML WebService reçoit un fichier attaché et son nom dans le corps du message. Le fichier n’est pas inséré dans une donnée, mais en attachement binaire au WebService en dehors de l’enveloppe.
En récupérant le Contexte, je vérifie si j’ai un fichier attaché. Dès lors, je le récupère avec l’objet DimeAttachment et le dépose sur le serveur avec ma méthode DeposeFichier.
Il est important d’avoir les droits en écriture sur le répertoire de destination.
Mon WebService renvoie alors l’url du fichier ainsi déposé.
Mon web.config contient le chemin du répertoire de dépôt et son url d’accès.
DeposeFichier ne fait que prendre le fichier et le copier dans un répertoire après avoir créer un nouveau sous répertoire (pour éviter les doublons de fichiers)
Le WebService est créé, reste a développer le client qui va le consommer.
2. Le client, consommateur du WebService
Nous allons alors créer une application Windows qui va prendre un fichier (c:\test.txt ) et l’envoyer par l’intermediaire du WebService.
Ajoutez Microsoft.Web.Services en référence et notre WebService en WebReference (ou Microsoft.Web.Services2 sous WSE 2.0).
A présent, il est nécessaire de changer le fichier Reference.cs de la WebReference. Affichez tous les fichiers et sous Reference.map, ouvrez le fichier reference.cs.
A Chaque mise à jour de la WebReference, vous devrez changer manuellement ce fichier qui se regénère automatiquement.
Ajoutez la référence vers Microsoft.Web.Services et changez la dérivation de la classe attache qui était System.Web.Services.Protocols.SoapHttpClientProtocol et qui devient Microsoft.Web.Services.WebServicesClientProtocol (ou Microsoft.Web.Services2.WebServicesClientProtocol sous WSE 2.0).
Ainsi vous serez en mesure d’utiliser les fonctionnalités incluses dans le WSE.
Sur l’application Windows, on dispose d’un label qui comporte le chemin du fichier a uploader. Ici, on prendra c:\text.txt. Veillez à sa présence sur votre machine cliente.
Un bouton permet de lancer le traitement.
J’instancie mon WebService dans ws.
Je déclare le Contexte DIME pour mon WebService et j’ajoute mon fichier en attachement. Puis j’invoque mon WebService et récupère en retour l’url de mon fichier ainsi déposé.
Voila pour les bases du DIME, infime partie des fonctionnalités des WSE 2.0.
3. En Savoir plus