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

C++Builder Discussion :

TIdHttp->post() + PHP [Web/Reseaux]


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2011
    Messages : 24
    Points : 18
    Points
    18
    Par défaut TIdHttp->post() + PHP
    Bonjour,

    Tout d'abord, je tiens à vous remercier pour le temps que vous prendrez à vous intéresser à mon problème.

    Ce dernier est le suivant :
    Une application c++ (avec c++Builder6) doit contacter un serveur web, et plus précisément un script PHP en particulier. L'application fournit à ce script 2 paramètres (typiquement login & password), et reçoit une réponse (booléen, ou autre, peu m'importe au final).

    Bref, je ne savais pas trop quoi commencer... j'ai commencé par chercher du côté de TIdHttp pour user de sa méthode Post(), mais sans trop de succès jusqu'à présent. J'ai en effet trouvé pas mal d'exemples sur le net, tous différents, tous conseillant telle ou telle méthode. J'suis donc un peu perdu, d'où mon message sur ce forum.

    Premièrement, est-ce la bonne méthode? Si non, comment devrais-je procéder?
    Si oui, comment dois-je remplir les différents champs du TIdHttp?

    Pour le moment, j'en suis arrivé à ça...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    TMemoryStream* ms = new TMemoryStream;
            TStringList *request = new TStringList();
            request->Clear();
            request->Values["login"] = "monLogin";
            request->Values["password"] = "monPassword";
     
            IdHTTP1->Request->Connection = "Keep-Alive";
            IdHTTP1->Request->ContentType = "application/x-www-form-urlencoded";
     
            IdHTTP1->Post("http://www.quelquechose.com/connection.php", request, ms);
            ms->SaveToFile("myFile.txt");
    Mais j'ai malheureusement droit à un "Socket error #11004".

    Merci pour votre aide,

    Romain

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 460
    Points : 24 874
    Points
    24 874
    Par défaut
    WSANO_DATA (11004)
    Valid name, no data record of requested type.

    The requested name is valid and was found in the database, but it does not have the correct associated data being resolved for. The usual example for this is a hostname -> address translation attempt (using gethostbyname or WSAAsyncGetHostByName) which uses the DNS (Domain Name Server), and an MX record is returned but no A record - indicating the host itself exists, but is not directly reachable.
    Pour le moment, tu n'arrives semble-t-il même pas à y accéder !
    Des FireWall peut-être ?

    Ce sujet pourrait t'interesser WebService et HTTPWebNode.UserName\PassWord

    Voir IdHTTP1->Request->BasicAuthentication et la prorpriété Authentication (TIdAuthentication) par rapport à mon utilisation manuel de HttpAddRequestHeaders.
    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
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2011
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    ShaiLeTroll,

    Merci pour cette rapide réponse.

    Bon, j'ai bien avancé...

    J'arrive bien à atteindre mon script. Néanmoins, il reste encore quelque chose qui coince...

    Me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    array(1) {
      ["login"]=>
      string(32) "monLogin
    password=monPassword
    "
    }
    Je planche là dessus...

    Romain

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 460
    Points : 24 874
    Points
    24 874
    Par défaut
    D'après la documentation du Post
    Form field name and value pairs should be separated from each other using the '&' character. Any remaining CRLF line-end sequences found in ASource are replaced with the '&' character.
    Sinon, passe en paramètre ton login\mot de passe, c'est un peu archaïque non ?
    Regarde une méthode plus standard dans Comment gérer les authentifications de type HTACCESS avec le TIdHTTP ?


    Dans la FAQ Comment valider un formulaire ne contenant que des données textuelles avec la méthode POST ?,
    cela utilise directement Add(...=...) au lieu de Values[...] = ...
    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

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2011
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    Merci pour les infos.

    Actuellement, je n'utilise pas BasicAuthentication, qui d'ailleurs n'apparait pas comme propriété de mon IdHTTP1->Request...

    Le login/password que je passe en paramètre actuellement sont des paramètres utilisés dans mon script PHP, et non les identifiants pour l'HTACCESS.

    Tout a l'air OK en utilisant un '&' comme délimiteur... Avec un trim en PHP qui suit bien sûr !

    Merci pour le coup de pouce !

    Romain

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

Discussions similaires

  1. Filtrage Post PHP - Sécurité
    Par geekforever dans le forum Langage
    Réponses: 7
    Dernier message: 03/10/2010, 18h54
  2. Recup variables méth. POST + Php non affiché
    Par brutalus dans le forum Langage
    Réponses: 11
    Dernier message: 10/09/2010, 18h24
  3. [httplib] Problème formulaire post PHP
    Par Gamoth dans le forum Réseau/Web
    Réponses: 4
    Dernier message: 27/03/2010, 13h40
  4. [PHP-JS] pb post php
    Par richton95 dans le forum Langage
    Réponses: 6
    Dernier message: 30/01/2006, 23h42

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