JeuWeb - Crée ton jeu par navigateur
Gérer les erreurs HTTP à l'appel de fichiers distants - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Gérer les erreurs HTTP à l'appel de fichiers distants (/showthread.php?tid=4085)



Gérer les erreurs HTTP à l'appel de fichiers distants - Sephi-Chan - 13-06-2009

Bonjour,

Dans le cadre du service Web du portail JeuWeb, je mets au points une API en PHP (afin de favoriser l'utilisation de ce service) mais je me heurte à un problème : la gestion des erreurs en cas de réponse HTTP défavorable.

Code :
$login = "Jambon";
$password = "test";
$bad_password = "badpassword";
$domain = "localhost:3000";

$document = new DOMDocument();
$document->load("http://{$login}:{$bad_password}@{$domain}/projects.xml");
echo $document->saveXML();

Quand je lance le script PHP (en ligne de commande, en l'occurrence) en utilisant un mauvais mot de passe, je reçois l'erreur :

Citation :Warning: DOMDocument::load(http://...@localhost:3000/projects.xml): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /Users/Romain/Development/PHP/webservice.php on line 17

Warning: DOMDocument::load(): I/O warning : failed to load external entity "http://Jambon:badpassword@localhost:3000/projects.xml" in /Users/Romain/Development/PHP/webservice.php on line 17

Tout simplement parce que côté serveur, mon application renvoie une erreur 403 quand l'authentification HTTP échoue. Tout fonctionne bien quand les identifiants sont corrects (le code 200 est alors renvoyé).

Ma question est donc : comment gérer cela ? PHP propose-t-il nativement des API pour gérer les erreurs à l'appel de fichiers distants ?
Le but est que toute installation PHP puisse utiliser mon API, si ça n'existe pas, j'utiliserai cURL…

Si vous le souhaitez, l'application (minimaliste) est accessible en ligne (hébergée sur mon MBP : http://sephichan.homelinux.net:3000/) pour quelques tests, voici ses coordonnées.

Code :
$login = "Jambon";
$password = "test";
$bad_password = "badpassword";
$domain = "sephichan.homelinux.net:3000";

$document = new DOMDocument();
$document->load("http://{$login}:{$bad_password}@{$domain}/projects.xml");
echo $document->saveXML();

Merci d'avance, Smile


Sephi-Chan


RE: Gérer les erreurs HTTP à l'appel de fichiers distants - phenix - 13-06-2009

Tu peux personnaliser les erreurs avec un fichier .htaccess Smile

Code :
ErrorDocument 404 /index.php

par exemple Smile


RE: Gérer les erreurs HTTP à l'appel de fichiers distants - Sephi-Chan - 13-06-2009

C'est en effet une possibilité. Mais je n'utilise pas Apache (mon serveur de développement est Webrick).
Finalement, je pense opter pour cURL, qui est activé sur pas mal d'hébergement PHP mutualisés et qui fonctionne à merveille.


Sephi-Chan