IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web & réseau Delphi Discussion :

Comment accéder aux composants d'un webmodule serveur SOAP depuis un client ?


Sujet :

Web & réseau Delphi

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2002
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 74
    Points : 44
    Points
    44
    Par défaut Comment accéder aux composants d'un webmodule serveur SOAP depuis un client ?
    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 SetStoredProcParams 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 à la fonction SetStoredProcParams depuis le Client afin de changer l'attribut "Params" du SQLStoredProc1 avant d'activer le ClientDataset1.

    Question :
    Comment accéder aux fonctions de 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.

  2. #2
    Membre du Club
    Inscrit en
    Décembre 2002
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 74
    Points : 44
    Points
    44
    Par défaut Voici comment accéder aux fonctions de l'interface serveur IWebModule1 :
    J'ai fini par trouver la réponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ClientDataSet1.Active := False;
    
      if SoapConnection1.Connected = false
      then SoapConnection1.Connected := True;
    
      with SoapConnection1.GetSOAPServer as IWebModule1 do
        SetStoredProcParams('SOFT_APPLI','ANNEES','43;');
    
      ClientDataSet1.Active := True;
    end;
    Ne pas oublier de recopier l'IDD de IWebModule1, situé dans le fichier généré par l'importeur WSDL, dans la propriété SOAPServerIDD de SoapConnection1
    (IAppServerSOAP - {39067244-6C93-046F-370F-7F1BEC7F9362})

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 11/09/2007, 11h32
  2. Réponses: 4
    Dernier message: 16/03/2007, 18h25
  3. Comment accèder aux composants graphique à partir d'un autre thread ?
    Par PerpetualSnow dans le forum Windows Forms
    Réponses: 6
    Dernier message: 07/03/2007, 11h11
  4. Comment accéder aux composants du module de données distant ?
    Par bds2006 dans le forum Bases de données
    Réponses: 1
    Dernier message: 23/06/2006, 00h47
  5. Réponses: 9
    Dernier message: 03/12/2004, 11h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo