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 :

Utilisation du webservice de météo GlobalWeatherSoap avec Delphi


Sujet :

Web & réseau Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 36
    Points : 34
    Points
    34
    Par défaut Utilisation du webservice de météo GlobalWeatherSoap avec Delphi
    Bonjour
    Je débute avec l'utilisation de webService avec Delphi 7.
    J'ai récupéré le fichier WSDL que j'ai importé avec l'importateur de fichier WSDL de Delphi

    J'ai mis alors l'instruction suivante :
    Memo1.Text := GetGlobalWeatherSoap(True,'',nil).GetCitiesByCountry('PARIS'); mais j'ai l'erreur suivante à l'exécution :

    procedure or function 'getWCity' expects parameter @CountryName which was not supplied
    Visiblement le paramètre n'est pas transmis

    Est-ce quelqu'un aurait une idée pour me dépanner ?

    Ci-dessous le code généré par l'importateur de WSDL

    Merci d'avance


    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    // ************************************************************************ //
    // Les types déclaré dans ce fichier ont été générés à partir de données lues dans le fichier
    // WSDL décrit ci-dessous :
    // WSDL     : C:\ESSAI\meteo.wsdl
    // Codegen  : [wfDebug,wfUseSerializerClassForAttrs]
    // (24/09/2012 16:13:04 - 1.33.2.5)
    // ************************************************************************ //
     
    unit meteo;
     
    interface
     
    uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns;
     
    type
     
      // ************************************************************************ //
      // Les types suivants mentionnés dans le document WSDL ne sont pas représentés
      // dans ce fichier. Ce sont soit des alias[@] de types représentés ou alors ils sont 
      // référencés mais jamais[!] déclarés dans ce document. Les types de la dernière catégorie
      // sont en principe mappés à des types Borland ou XML prédéfinis/connus. Toutefois, ils peuvent aussi
      // signaler des documents WSDL incorrects n'ayant pas réussi à déclarer ou importer un type de schéma.
      // ************************************************************************ //
      // !:string          - "http://www.w3.org/2001/XMLSchema"
     
     
     
      // ************************************************************************ //
      // Espace de nommage : <a href="http://www.webserviceX.NET" target="_blank">http://www.webserviceX.NET</a>
      // soapAction : <a href="http://www.webserviceX.NET/%operationName%" target="_blank">http://www.webserviceX.NET/%operationName%</a>
      // transport : <a href="http://schemas.xmlsoap.org/soap/http" target="_blank">http://schemas.xmlsoap.org/soap/http</a>
      // liaison   : GlobalWeatherSoap
      // service   : GlobalWeather
      // port      : GlobalWeatherSoap
      // URL       : <a href="http://www.webservicex.net/globalweather.asmx" target="_blank">http://www.webservicex.net/globalweather.asmx</a>
      // ************************************************************************ //
      GlobalWeatherSoap = interface(IInvokable)
      ['{8091B155-5793-08E1-8C8C-B170D069C2CB}']
        function  GetWeather(const CityName: WideString; const CountryName: WideString): WideString; stdcall;
        function  GetCitiesByCountry(const CountryName: WideString): WideString; stdcall;
      end;
     
    function GetGlobalWeatherSoap(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): GlobalWeatherSoap;
     
     
    implementation
     
    function GetGlobalWeatherSoap(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): GlobalWeatherSoap;
    const
      defWSDL = 'C:\ESSAI\meteo.wsdl';
      defURL  = 'http://www.webservicex.net/globalweather.asmx';
      defSvc  = 'GlobalWeather';
      defPrt  = 'GlobalWeatherSoap';
    var
      RIO: THTTPRIO;
    begin
      Result := nil;
      if (Addr = '') then
      begin
        if UseWSDL then
          Addr := defWSDL
        else
          Addr := defURL;
      end;
      if HTTPRIO = nil then
        RIO := THTTPRIO.Create(nil)
      else
        RIO := HTTPRIO;
      try
        Result := (RIO as GlobalWeatherSoap);
        if UseWSDL then
        begin
          RIO.WSDLLocation := Addr;
          RIO.Service := defSvc;
          RIO.Port := defPrt;
        end else
          RIO.URL := Addr;
      finally
        if (Result = nil) and (HTTPRIO = nil) then
          RIO.Free;
      end;
    end;
     
     
    initialization
      InvRegistry.RegisterInterface(TypeInfo(GlobalWeatherSoap), 'http://www.webserviceX.NET', '');
      InvRegistry.RegisterDefaultSOAPAction(TypeInfo(GlobalWeatherSoap), 'http://www.webserviceX.NET/%operationName%');
     
    end.

  2. #2
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Rajoute dans la partie initialization
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      InvRegistry.RegisterInvokeOptions(TypeInfo(GlobalWeatherSoap), ioDocument);
    (Merci l'importateur de Delphi XE2 pour voir la différence)
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 36
    Points : 34
    Points
    34
    Par défaut ça fonctionne
    Impeccable, ça fonctionne
    Merci beaucoup

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

Discussions similaires

  1. utiliser un webservice écrit en php avec du .net
    Par khaledus dans le forum Services Web
    Réponses: 3
    Dernier message: 25/06/2007, 08h02
  2. Réponses: 5
    Dernier message: 15/03/2007, 09h52
  3. Réponses: 4
    Dernier message: 13/07/2005, 11h55
  4. utilisation composant delphi 7 win32 avec delphi 2005
    Par chtiot dans le forum Composants VCL
    Réponses: 3
    Dernier message: 18/02/2005, 06h49
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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