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

Réseau/Web Python Discussion :

Server Web/Catcher l'Erreur 404


Sujet :

Réseau/Web Python

  1. #1
    Membre actif Avatar de Balbuzard
    Profil pro
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Points : 263
    Points
    263
    Par défaut Server Web/Catcher l'Erreur 404
    Bonjour,
    Je viens de creer un server en Python, voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    import os
    from BaseHTTPServer import HTTPServer
    from SimpleHTTPServer import SimpleHTTPRequestHandler
    # The path is the one of the directory served
    os.chdir(os.path.expanduser("/home/moi/Desktop/python"))
    # IP-Address of the server and the port listeneds
    httpd=HTTPServer(('127.0.0.1', 80), SimpleHTTPRequestHandler)
    httpd.serve_forever()
    Lorsque je demande une page qui n'est pas dans le repertoire /home/moi/Desktop/python, l'erreur 404 est rencontree (normal, la page n'existant pas)
    Je voudrais savoir comment gerer cette erreur cote server et faire faire a mon script python d'autre chose que d'afficher une page d'erreur. Je veux par exemple que lorsque le client demande une page qui n'existe pas, un script bash s'execute (je sais demander l'execution de scripts bash, je sais pas comment la lancer en cas d'erreur 404)
    La doc que j'ai trouvee a ce sujet ne concerne que le cote client!
    Merci de votre aide!

  2. #2
    Membre actif Avatar de Balbuzard
    Profil pro
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Points : 263
    Points
    263
    Par défaut
    Bonjour,
    Je vais essayer de tourner le probleme autrement,
    Mon server est cree, tous les fichiers dans le repertoire sont disponibles aux clients qui peuvent les telecharger.
    Maintenant, il est possible que les clients fassent appel a un fichier qui n'est pas present, je voudrais qu'a ce moment, un autre comportement que 'erreur 404' soit mis en place. Je cherche donc a catcher cette erreur, je n'arrive pas a mettre la main sur un exemple ou cette erreur est recuperee de ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    try:
    httpd=HTTPServer(('127.0.0.1', 80), SimpleHTTPRequestHandler)
    httpd.serve_forever()
    except HTTPError, e:
    print e.code
    print e.read()
    Mais j'ai toujours l'erreur 404!!!
    Desole de vous embeter avec ce point, mais il est important pour mon projet et ca fait seulement 2 jours que je bosse sous Python!
    Merci!

    EDIT:
    Y-a-t'il moyen de tester si un fichier est sur le serveur avant de faire la requete? S'il n'y est pas, je demanderai juste a Python de faire autre chose.
    Merci de vos reponses!

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Points : 923
    Points
    923
    Par défaut
    Je ne connais que très peu ces modules, mais à mon avis tu vas devoir faire une classe qui hérite de SimpleHTTPRequestHandler et surcharger la méthode do_GET.

    EDIT: Après une étude du code, je pense que c'est plutôt la méthode send_head que tu devras surcharger.

  4. #4
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Dans le dossier lib de ton install python tu as le source de SimpleHTTPRequestHandler dans le fichier SimpleHTTPServer.py.

    Si tu regardes le code, tu verras qu'il vérifie d'abord que le fichier demandé existe et si ce n'est pas le cas, il envoie un 404.

    Inspire toi de ce code pour l'adapter à tes besoins.

  5. #5
    Membre actif Avatar de Balbuzard
    Profil pro
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Points : 263
    Points
    263
    Par défaut
    ok, merci, je vois ou l'appel a l'erreur 404 est effectuee, je vais pouvoir modifier le comportement de cette methode comme je le voulais.
    Merci beacoup, je voyais vraiment pas comment m'en sortir :-)

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

Discussions similaires

  1. Déploiement Web Service -> erreur 404
    Par leduicbruno dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 17/12/2013, 08h17
  2. [Tomcat] Web.xml , listener qui bloque et provoque erreur 404
    Par julestruong dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 01/08/2013, 14h17
  3. Réponses: 1
    Dernier message: 02/12/2012, 20h04
  4. Réponses: 4
    Dernier message: 27/05/2009, 11h52
  5. Erreur 404 lors de l'appel d'un web service
    Par niouma dans le forum Services Web
    Réponses: 1
    Dernier message: 03/05/2009, 01h36

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