Le premier site francophone dédié au développement Pocket PC

Consommer un service Web
Auteur
Richard Clark
Date 15 janvier 2003
 
   


Cette fois-çi, nous allons créer pour Pocket PC une petite application riche qui va consommer du Web Service, en l'occurence, le service web gratuit de ce site disponible à l'adresse suivante :

http://www.c2i.fr/c2iws/c2iWS_Free.asmx

Créer donc classiquement un nouveau projet de type Pocket PC avec Visual Studio .NET 2003. Puis, avec un clic droit sur les références du projet, choisissez Add Web Reference :

Vous visualisez ainsi tous les membres de ce "splendide" service web. Avant de cliquez sur Add Reference, changez son nom en c2iWS pour qu'il soit plus explicite par la suite :

L'interface de notre application va remplir un ListBox avec les titres des Actualités récentes ou les derniers articles parus sur c2i.fr. Quand l'utilisateur cliquera sur un titre, le résumé détaillé correspondant s'affichera dans un TextBox situé en dessous :

Si vous regardez l'aide de ce service web, vous constaterez que les fonctions getc2iActualites et getc2iArticles retournent toutes les deux un DataSet avec la même structure. On va donc encapsuler chaque ligne de la table principale de ce DataSet dans une classe nommée Item :

Public Class Item
    Public Enum ItemType 
        Article = 0 
        Actualite = 1 
    End Enum 

    Private _sTitre, _sResume, _sURL As String, _dDate As DateTime, _tType As ItemType 

    Public Sub New(ByVal sTitre As String, ByVal sResume As String, ByVal sURL As String, ByVal dDate As DateTime, ByVal tType As ItemType) 
        _sTitre = RemoveTags(sTitre) 
        _sResume = sResume 
        _sURL = sURL 
        _dDate = dDate 
        _tType = tType 
    End Sub 

    Public ReadOnly Property Titre() As String
         Get
             Return _sTitre 
         End Get
     End Property
     '...
     'idem pour les autres propriétés
     '...

     Private Function RemoveTags(ByVal sM As String) As String
          'supprime les tags HTML quand il y en a
          'consulter le code dans le source
  
   End Function

     'redéfinission de la méthode ToString
     Public Overrides Function ToString() As String 
          Return Me.Titre 
     End Function
End Class

Maintenant, il ne nous reste plus qu'à réagir quand on clique sur le menu Actualités ou le menu Articles pour interroger effectivement le service web et remplir le ListBox de ces éléments.

Ce qu'il y a d'interressant avec le ListBox, c'est que ses éléments (dans la collection Items) sont des Object. Le texte qui est affiché est le résultat de la méthode ToString de l'objet correspondant. Donc, nous allons ajouter dans la collection Items du ListBox des Item que l'on vient de définir. C'est leur méthode ToString qui s'affichera dans le ListBox, ie le Titre :

Private Sub mnuActus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuActus.Click
      Application.DoEvents() 'nécessaire pour que le menu se repositionne correctement, sinon il a pas le temps
      Dim oWS As New c2iWS.c2iServiceWebgratuit
      Me.Text = "Réception en cours..."
      Dim oDS As DataSet = oWS.getc2iActualites
      lstNews.Items.Clear()
      For Each oRow As DataRow In oDS.Tables(0).Rows
           Dim oItem As New Item( _ oRow("Titre").ToString, _
                                              oRow("Resume").ToString, _
                                              oRow("URL").ToString, _
                                              CType(oRow("Date"), DateTime), _
                                              Item.ItemType.Actualite) 'Item.ItemType.Article pour le menu article
           lstNews.Items.Add(oItem)
      Next
      Me.Text = "Réception terminée"
End Sub

Le code est le même pour les Articles.

Alors, difficile d'interroger un service web avec le Compact Framework ?

Téléchargez les sources ici.

Téléchargez le programme d'installation directement ici pour ARM (47Ko).

Richard Clark

 
   

Copyright 2001-2004 - Tous droits réservés
Toutes les autres marques et produits présents dans ces pages sont la propriété exclusive de leurs sociétés respectives.