JeuWeb - Crée ton jeu par navigateur

Version complète : Gérer les erreurs HTTP à l'appel de fichiers distants
Vous consultez actuellement la version basse qualité d'un document. Voir la version complète avec le bon formatage.
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, 2


Sephi-Chan
Tu peux personnaliser les erreurs avec un fichier .htaccess 2

Code :
ErrorDocument 404 /index.php

par exemple 2
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
URLs de référence