Forums développeurs windev Tunidev
Howdy Guest! Connexion / Create an account
Se connecter
Utilisateur :
Mot de passe :
 
  • Portail
  • Forums
  • Recherche
  • Members
  • Calendrier
  • Aide
Forums développeurs windev  /  Forums Développeurs WINDEV  /  TRUCS & ASTUCES v
1 2 Suivant »
 /  [WD/.NET] Exchange Web Services, Partie 2
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[WD/.NET] Exchange Web Services, Partie 2
jibi049 Hors ligne
Member
***
Messages : 87
Sujets : 15
Inscription : Mar 2012
Réputation : 0
Thanks: 0
Given 0 thank(s) in 0 post(s)
#1
03-12-2014, 11:11 AM (Modification du message : 07-01-2018, 08:20 PM par jibi049.)
Exchange Web Services, Partie 2

Il y a quelques mois nous avions vu comment utiliser l'API Exchange Web Services 2.0 depuis Windev. Grâce aux bibliothèques .NET fournies il est possible d'interroger un serveur Exchange et de récupérer les e-mails d'un utilisateur. Nous avons fait l'expérience en créant une petite fonction qui récupère 10 objets à la fois dans la boite de réception de l'utilisateur, et ce en travaillant avec la notion d'offset, ce qui permet à terme d'effectuer des opérations de pagination (ex : l'utilisateur appuie sur un bouton pour afficher la deuxième page). L'API est fournie par Microsoft et peut être téléchargée sur le site officiel à l'adresse suivante : http://www.microsoft.com/en-us/download/...x?id=35371. Sélectionnez la version qui convient (32 ou 64 bits) puis installez-là sur votre poste de développement. Les DLL sont alors disponibles dans le répertoire %ProgramFiles%\Microsoft\Exchange\Web Services\2.0. Importez-les dans votre projet Windev.

Recherche avec pagination

Dans l'exemple qui suit, nous allons effectuer une récupération de 10 éléments en modifiant à chaque fois l'offset. Nous nous basons sur le tutoriel proposé sur MSDN (http://msdn.microsoft.com/en-us/library/...50%29.aspx) qui explique comment fonctionne cette méthode. Nous avons alors repris la procédure d'exemple en fin de page mais nous avons fait une croix sur l' "ancre" qui permet de déterminer si un élément a changé de place ou non.

Il est évidemment important d'allouer un objet Credentials pour permettre la connexion à chaque requête. Le Web Service EWS étant stateless, la connexion n'est pas constante et chaque requête est traitée indépendamment des autres. Avant toute chose, il faut donc instancier un objet global de type ExchangeService, qu'on pourra réutiliser dans chaque fenêtre. Dans le code qui suit, l'objet fait plutôt partie d'une classe qu'on pourra déclarer dans la section "initialisation du projet".

En bref :
- On a instancié un objet de la classe ExchangeService.
- On se connecte en donnant le nom d'utilisateur, mot de passe, domaine (WebCredentials).
- On récupère l'URL de l'endpoint (point d'éntrée) du service Web.

Si la connexion a abouti il faut ensuite réaliser ces opérations :

- Créer un objet ItemView en donnant la taille (page) et l'offset (0).
- Ajouter les propriétés à récupérer dans View.PropertySet.
- Ajouter une condition de tri.
- Indiquer la méthode de recherche.

Pourquoi ne pas avoir indiqué d'autres propriétés dans le constructeur de la classe PropertySet ? Si on souhaite en rajouter d'autres, on peut se servir de la méthode Add() car le second constructeur de la classe PropertySet demande une collection d'objets. En .NET, lorsqu'on indique plusieurs objets à la suite, il considère cela comme un tableau d'objets ou une collection IEnumerable, et reconnait quel constructeur doit être appelé. Mais à ce stade Windev n'est pas capable d'effectuer la conversion de types.

On entre alors dans le vif du sujet : la récupération des e-mails. Voici ce qu'on a réalisé dans cette étape (le tout étant englobé dans une boucle) :

- Dans la boucle, vérifier le booléen qui indique s'il reste des éléments à afficher.
- FindItems(DOSSIER, VUE) pour récupérer une variable de type FindItemsResults.
- Vérifier qu'il y a encore des objets avec la propriété MoreAvailable.
- S'il reste des objets à afficher, déplacer l'offset de la vue (maVue.Offset = maVue.Offset + taillePage).
- Parcourir la collection.
- Sortir du POUR TOUT lorsque le nombre d'objets de la collection est atteint.
- La boucle répétera le traitement tant qu'il y a des objets à afficher.

Exemples (parfois incomplets)

1.
Code :
// Préparer la vue et répéter le traitement tant que MoreItems = vrai.
vi <- new ItemView(iPageSize, iOffset)
vi.PropertySet = new PropertySet(BasePropertySet.FirstClassProperties)
vi.OrderBy.Add(ItemSchema.DateTimeReceived, SortDirection.Descending)    
vi.Traversal = ItemTraversal.Shallow

2.
Code :
clDrFindResults <- :m_wsExchange.FindItems(pclFolder, vi)
iDspCnt = clDrFindResults.Items:Count

3.
Code :
POUR TOUT it DE clDrFindResults.Items
// ...
FIN

Relayé de : http://vincent-lecomte.blogspot.be/2014/...e-web.html
  Trouver
  Répondre
« Sujet précédent | Sujet suivant »


Sujets apparemment similaires...
Sujet Auteur Réponses Affichages Dernier message
  [WD/.NET] Exchange Web Services, Partie 3 jibi049 1 1,415 20-12-2014, 04:45 AM
Dernier message: tunidev
  [WD/.NET] Exchange Web Services, Partie 1 jibi049 0 1,941 03-12-2014, 11:02 AM
Dernier message: jibi049

  • Voir une version imprimable
  • S’abonner au sujet
Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)

About Tunidev

Forum des developpeurs windev.

Quick Links

  • Contact Us
  • Tunidev
  • Forum Team
  • Lite Version

 

Powered by MyBB, © 2002-2019 MyBB Group.

Focus MyBB Theme by WallBB

Affichage linéaire
Affichage hiérarchique