Bonjour,

Sous Delphi 2007

Pour la partie Serveur SOAP :
J'ai créé un WebService via le menu ->nouveau->autre->Services web->Application serveur SOAP. Le web module TWebModule2 a été créé automatiquement avec les composants (HTTPSoapDispatcher1, HTTPSoapPascalInvoker1, WSDLHTMLPublish1)

J'ai créé un web module via le menu ->nouveau->autre->Services web->Module de données serveur SOAP que j'ai nommé WebModule1 et j'y ai placé les composants (SQLConnection1, SQLStoredProc1, DataSetProvider1) en les configurant pour permettre la récupération de données. J'ai ajouté la fonction suivante qui me permettra de modifier l'attribut "Params" de SQLStoredProc1:
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
type
  IWebModule1 = interface(IAppServerSOAP)
    ['{14E15867-7355-4CB2-BA0F-2610DC53F043}']
    function  SetStoredProcParams(const AAppli: WideString; const ADataType: WideString; const AParams: WideString): WideString; stdcall;
  end;
 
  TWebModule1 = class(TSoapDataModule, IWebModule1, IAppServerSOAP, IAppServer)
    SQLConnection1: TSQLConnection;
    SQLStoredProc1: TSQLStoredProc;
    DataSetProvider1: TDataSetProvider;
  private
 
  public
    function  SetStoredProcParams(const AAppli: WideString; const ADataType: WideString; const AParams: WideString): WideString; stdcall;
  end;
 
function TWebModule1.SetStoredProcParams(const AAppli: WideString; const ADataType: WideString; const AParams: WideString): WideString;
begin
  SQLStoredProc1.Params[0].Value := AAppli;
  SQLStoredProc1.Params[1].Value := ADataType;
  SQLStoredProc1.Params[2].Value := AParams;
end;

Pour la partie Client SOAP:
J'ai créé un client "Application Fiche VCL pour win32".
Sur la fiche j'ai déposé et configuré les composants
(SoapConnection1, ClientDataSet1, DataSource1, DBGrid1, DBNavigator1, Button1) avec les attributs suivants:
- SoapConnection.URL =
http://localhost:8081/ProjectServer1...ap/IWebModule1
- ClientDataSet1.RemoteServer = SoapConnection1
- ClientDataSet1.ProviderName = 'DataSetProvider1'

Sur l'événement Button
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
procedure TForm1.Button1Click(Sender: TObject);
begin
  ClientDataSet1.Active := True;
end;
J'obtiens bien les données dans la grille DBGrid1

Maintenant, j'aimerais pouvoir accéder à ma fonction SetStoredProcParams depuis le Client afin de changer l'attribut "Params" de SQLStoredProc1 avant d'activer le ClientDataset1.

Question :
Comment accéder à la fonction "SetStoredProcParams " définie dans l'interface serveur IWebModule1 ?

J'ai bien essayé le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
procedure TForm1.Button1Click(Sender: TObject);
var
  AWebModule1 : IWebModule1;
begin
  SoapConnection1.Connected := True;
  if SoapConnection1.GetInterface(IWebModule1,AWebModule1) = True
  then AWebModule1.SetStoredProcParams('SOFT_APPLI','ANNEES','43;');
  ClientDataSet1.Active := True;
end;
Mais le résultat de la fonction GetInterface retourne false...

Merci pour ton aide.