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

Apache Discussion :

Effectuer une requête sans navigateur


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Par défaut appel au serveur sans saisir manuellement l'URL dans le navigateur
    Bonjour,

    Est-il possible de soumettre une requête à un serveur apache et de recevoir la réponse SANS PASSER par un navigateur ?
    Mon problème est que l'utilisateur doit pouvoir questionner une base de donnée depuis un environnement de programmation genre borland, ou dev (dans mon cas c'est IDL pour ceux qui connaissent) , en appellant une fonction: en lui donnant en argument la requête et en récupérant la réponse. Donc il faudrait qu'elle envoir ca directement au serveur sans passer par le navigateur qui serait obligé d'ouvrir une page internet! Dans mon cas, aucune page internet ne doit s'ouvrir..

    Est-ce possible ? si oui, comment ?

    Merci !!

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    C'est quel langage de programmation ? Il faut effectuer une requête HTTP complète. Y a des API pour faire dans différents langages. Pour Java, le package HttpClient d'Apache est pas mal.

  3. #3
    Membre averti
    Inscrit en
    Février 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Par défaut
    Bonjour,

    Cest le langage du même nom : IDL (interactive data langage), langage beaucoup utilisé en astronomie, il est proche du FORTRAN.
    Il faut donc que je fasse une 'requête HTTP complète' ?
    Ca consiste à faire quoi exactement .. ?

    Merci

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Ben, ça dépend de ce que tu veux faire comme requête. Si c'est juste un simple appel d'URL, c'est pas trop compliqué. Pour faire un POST, c'est plus délicat. Va voir ici, le protocole HTTP est expliqué. Si tu peux trouver des API qui font tout le boulot, c'est carrément mieux. Sinon, faut que tu ouvres un socket TCP sur le serveur (port 80 s'il ne figure pas dans l'URL), puis tu envoies une série de lignes (<CR> signifie "saut de ligne") :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    GET /rep/mapage.html HTTP/1.0<CR>
    Host: www.monsite.com<CR>
    <CR>
    Après ça, tu récupères la réponse du serveur. Elle est en 2 parties : les en-têtes et le corps de la réponse. Ce qui t'intéresse se trouve dans le corps de la réponse mais il faut toujours regarder les en-têtes pour savoir si la requête a bien été traitée, s'il y a une redirection, etc. Pour ton cas, ce n'est peut-être pas nécessaire mais il faut quand même vérifier que le statut est bien 200.

    Je t'encourage à t'entraîner d'abord en faisant un telnet, histoire de bien comprendre comment marche le protocole et surtout l'histoire du saut de ligne vide après le dernier en-tête de ta requête.

  5. #5
    Membre averti
    Inscrit en
    Février 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Par défaut
    Okay,
    Merci pour tout ca, je vais regarder. Ma requête doit être une requête de type SQL, pour que le serveur questionne à son tour une base de donnée. Après, le résultat doit être retransmis à IDL, en sortie de la fonction IDL que j'aurai implémentée..
    Ca correspond à ton 'POST' ?

    a+

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    POST, c'est comme les formulaires : il y a GET où tout passe dans l'URL, et il y a POST où on voit rien dans l'URL.

  7. #7
    Membre averti
    Inscrit en
    Février 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Par défaut Effectuer une requête sans navigateur
    Bonjour !

    J'ai une question simple :
    j'ai un serveur apache+PHP sur cet ordi. comment je fais pour acceder aux données qu'il ya sur ce serveur depuis un autre ordi, SANS utiliser le navigateur ?
    autrement dit écrire un client qui puisse demander une requête au serveur qui est sur cette machine..

    Merci.
    pieutr

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    C'est à votre programme de se comporter comme un client HTTP : donc d'utiliser et respecter ce protocole pour effectuer des requêtes et traiter les réponses. Vous pouvez gérer tous ces aspects vous-mêmes (sockets) mais c'est assez laborieux ou opter pour des bibliothèques pour vous simplifier la tâche. Ça dépend de votre langage mais on peut citer cURL (initialement C) qui possède de très nombreux "wrappers" pour d'autres langages (PHP, Ruby, ...) - et qui ne se limite pas au protocole HTTP(S).

  9. #9
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Par exemple, si tu veux accéder à des données stockées en base de données, tu as 2 solutions : soit le client se connecte directement à la base de données (avec le driver qui va bien) et fait ses requêtes, soit il passe par Apache (il fait un appel HTTP à un script) qui fait la requête pour lui et lui renvoie le résultat de la requête dans un certain format (XML vraisemblablement). Pour le second cas, c'est comme je disais au début et comme l'explique Julp, il faut que ton client se comporte comme un navigateur et fasse une requête HTTP sur Apache.

  10. #10
    Membre averti
    Inscrit en
    Février 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Par défaut
    D'accord, mais ceci m'ammène à me poser 2 nouvelles questions :

    - Si on poursuit cet exemple de connection à une base de donnée, en employant la 2eme méthode : Connection à apache d'abord. La requête SQL désirée par le client sera t-elle mise dans le corps de la requête HTTP qu'il envoie?

    - Que fait le client distant, concrètement, pour se connecter à mon serveur apache ? doit-il écrire la requête HTTP lui même ? Par ce que dans ce cas, si tous les clients qui veulent acceder à mon webservice doivent écrire une requête HTTP !! on s'en sort plus..

    Merci !
    pieutr

  11. #11
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Citation Envoyé par pieutr Voir le message
    - Si on poursuit cet exemple de connection à une base de donnée, en employant la 2eme méthode : Connection à apache d'abord. La requête SQL désirée par le client sera t-elle mise dans le corps de la requête HTTP qu'il envoie?
    Pas forcément : quand tu fais une recherche sur les pages jaunes, tu ne tapes pas spécialement la requête SQL de recherche, elle est construite pour toi. Tout dépend de ce que tu veux faire : soit tu veux faire de l'ultra générique et dans ce cas il faut peut-être effectivement envisager que la requête SQL à effectuer soit fournie par le client, soit tu fais tu spécifique (un script pour faire telle requête, tel autre script pour faire telle autre requête), dans ce cas ton client n'a qu'à fournir la liste des paramètres, exactement comme sur une page HTML standard qui traite un formulaire, sauf que c'est pas un navigateur qui envoie les données et qu'en retour, la réponse n'est pas forcément en HTML, si tu vois ce que je veux dire.

    Citation Envoyé par pieutr Voir le message
    - Que fait le client distant, concrètement, pour se connecter à mon serveur apache ? doit-il écrire la requête HTTP lui même ? Par ce que dans ce cas, si tous les clients qui veulent acceder à mon webservice doivent écrire une requête HTTP !! on s'en sort plus..
    C'est un peu le principe des Web services, donc si on s'en sort !! Mais relis nos réponses : dans tous les cas, oui, faut passer par une requête HTTP complète. Mais tu n'es pas obligé de faire tout le travail toi-même : en fonction de ton langage de programmation, il existe des API pour te faciliter le travail.

    Si tu cherches vraiment à faire du vrai Web service, c'est autre chose d'un peu plus compliqué car il faut que le client parle le Web service (de nouveau, passe par des API existantes) mais aussi que le serveur (i.e. la cible de l'appel Web service, pas Apache) soit compatible Web service et de nouveau ici aussi, y a tout un tas d'API qui existent pour créer des Web services.

    Maintenant, faut que tu saches exactement ce que tu veux faire : si ton besoin est interne, c'est-à-dire que tu maîtrises totalement le ou les clients et le serveur. Dans ce cas, autant écrire un truc simple pas dans le standard Web service, ça sera plus simple. Mais si tu veux ouvrir ton service à d'autres clients, il faut effectivement envisager d'écrire un vrai Web service.

Discussions similaires

  1. tester la validité d'une requête sans l'effectuer
    Par Jasmine80 dans le forum SGBD
    Réponses: 7
    Dernier message: 01/06/2012, 14h44
  2. Effectuer une requête
    Par Telemak dans le forum Bases de données
    Réponses: 23
    Dernier message: 19/06/2006, 13h28
  3. Réponses: 6
    Dernier message: 09/06/2006, 18h22
  4. RecordSource avec une requête sans résultat
    Par temar dans le forum Access
    Réponses: 4
    Dernier message: 23/05/2006, 18h13
  5. Exécution d'une requête sans stocker les transactions
    Par Actarus69 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 24/03/2006, 12h45

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