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 :

[D7] WebService et HTTPWebNode.UserName\PassWord


Sujet :

Web & réseau Delphi

  1. #1
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 041
    Par défaut [D7] WebService et HTTPWebNode.UserName\PassWord
    J'effectuais un test de connexion à un WebService développé en PHP avec un Login et un Mot de Passe dans un programme Delphi
    ce test étant dans le but de vérifier si cela fonctionnait déjà via un client non-PHP car l'un des nos partenaires développant en Open-Edge ABL, n'arrive pas non plus à l'intégrer.

    un client en PHP donnerait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     $aOptions = array('login' => 'toto',
                        'password' => 'titi',
                        'trace' => TRUE);
      $oSoapClient = new SoapClient('https://www.toto.php', $aOptions);
     
      $oPatient = $oSoapClient->FonctionBidule('%', '', '', '', '', '', 'truc', '', '', 'all');
    j'ai tenté de renseigner HTTPWebNode.UserName\PassWord de mon THTTPRIO mais du côté PHP, il ne semble pas comprendre que l'on utilise ce login\mot de passe alors qu'en débogage, ces paramètres sont passé à l'API windows InternetConnect (THTTPReqResp.Connect dans SOAPHTTPTrans.pas), je ne vois pas comment aller plus loin dans le debug ... est-ce au moins des login\password à un même niveau de protocol ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 041
    Par défaut
    J'ai avancé dans mes recherches en PHP, on utilise la variable $_SERVER, effectivement, il n'y a pas le login et le mot de passe lorsque l'appel est fait via Delphi pourtant InternetQueryOption me renvoie bien mon login mais il ne semble pas être posé dans l'entête HTTP (j'ai testé en utilisant NetChat sur le port 80 pour lire en clair la requête, si c'est pas trollesque ... alors j'ai fait mon sauvage , j'ai ajouté directement la section login\pw crypté dans le header HTTP ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TFrm_Test_WS_ECFRS.HTTPRIO1HTTPWebNode1BeforePost(
      const HTTPReqResp: THTTPReqResp; Data: Pointer);
    var
      s: string;
    begin
        s := 'Authorization: Basic ***'; // *** contenant la combinaison login\pw obtenue via la trace http en PHP 
        if not HttpAddRequestHeaders(Data, PChar(s), Length(s), HTTP_ADDREQ_FLAG_ADD) then
          ShowMessage('Et merde !');
    end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 041
    Par défaut
    Voici le code final, si cela interesse, le Login et le Mot de Passe sont encodé en Base64 (unité EncdDecd.pas, bien caché celle-là !), HTTPReqResp_WS est le HttpWebNode du THttpRIO

    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
    {* ----------------------------------------------------------------------------}
    procedure TFrm_Test_WS.HTTPReqResp_WSBeforePost(const HTTPReqResp: THTTPReqResp; Data: Pointer);
    var
      s: string;
    begin
      s := 'Authorization: Basic ' + EncodeLoginPW(HTTPReqResp.UserName, HTTPReqResp.Password);
      if not HttpAddRequestHeaders(Data, PChar(s), Length(s), HTTP_ADDREQ_FLAG_ADD) then
        ManageError('HttpAddRequestHeaders', GetLastError());
    end;
     
    {* ----------------------------------------------------------------------------}
    function TFrm_Test_WS.EncodeLoginPW(const ALogin, APW: string): string;
    begin
      Result := EncdDecd.EncodeString(ALogin + ':' + APW);
    end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

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

Discussions similaires

  1. ORA-01017 : Invalid username/password; login denied
    Par CAML dans le forum Connexions aux bases de données
    Réponses: 1
    Dernier message: 16/07/2008, 14h46
  2. Execution d'un process en specifiant username/password
    Par Rastafman dans le forum ASP.NET
    Réponses: 2
    Dernier message: 18/03/2008, 14h23
  3. Réponses: 4
    Dernier message: 10/01/2007, 12h28
  4. Réponses: 10
    Dernier message: 09/03/2006, 13h27
  5. Username & Password d'une connexion internet
    Par tintin22 dans le forum Web & réseau
    Réponses: 4
    Dernier message: 25/10/2005, 23h29

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