Bonjour,

Dans le cadre d'un développement pour Windows CE, l'utilisation d'un Web Service s'est de suite imposée. Le souci, c'est que j'ai beau cherché de la documentation (complète j'entends), j'ai du mal à en trouver. La plupart du temps, il s'agit de présenter un cas bien spécifique et on en tire très peu.

Par conséquent, j'avance mais très lentement et il se peut que la méthode que j'emploie soit ainsi faussée....

Je vous montre un petit exemple d'un Web Service que j'ai commencé à développer entre deux sujets.

WebServiceImpl.pas

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
type
  TWebService = class(TInvokableClass, IWebService)
  private
    ADOCon : TADOConnection;
    ADOReq : TADOQuery;
  public
    function getOperateurs(ChaineConnexion : string):ListeOperateur; stdcall;
  end;
 
implementation
 
function TWebService.getOperateurs(ChaineConnexion, OwnerInit, Societe : string):ListeOperateur; stdcall;
var
  Operateur : ListeOperateur;
begin
  try
    ADOCon := TADOConnection.Create(nil);
    ADOCon.LoginPrompt := false;
    ADOCon.ConnectionString := ChaineConnexion;
    ADOCon.Connected := true;
 
    ADOReq := TADOQuery.Create(nil);
    ADOReq.Connection := ADOCon;
    with ADOReq do
    begin
      SQL.Clear;
      SQL.Add('SELECT DISTINCT USER_NAME, PASSWORD FROM UTILISATEUR');
      try
        Open;
        if (RecordCount > 0) then
        begin
          SetLength(Operateur, 0);
          while not eof do
          begin
            SetLength(Operateur, Length(Operateur)+1);
            Operateur[Length(Operateur)-1] := TOperateur.Create(FieldByName('USER_NAME').AsString, FieldByName('PASSWORD').AsString);
          end;
        end;
      except
        Close;
        SQL.Clear;
      end;
    end;
 
    Result := Operateur;
  except
    ADOReq.Free;
    ADOCon.Free;
  end;
end;
 
initialization
{ les classes invocables doivent être recensées  }
   InvRegistry.RegisterInvokableClass(TWebService);
 
end.
Operateur.pas

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
unit Operateur;
 
interface
 
type
  TOperateur = Class(TObject)
    Username : String;
    Password : String;
    constructor Create(_Username, _Password : String);
  End;
  ListeOperateur = Array of TOperateur;
 
implementation
 
constructor TOperateur.Create(_Username, _Password : String);
begin
  Username := _Username;
  Password := _Password;
end;
 
end.
Déjà, je ne sais pas si je fais bien les choses... Et en plus, je ne sais absolument pas comment exploiter ce service et c'est un véritable problème...

Si vous avez des infos, des tutos ou des retours, je suis preneur.

Cordialement,