2010-10-13 19 views
2

Je construis un script en PHP pour interagir avec une API et je dois être capable d'analyser le code d'état HTTP que l'API me donne. Pour la plupart, il donne une des réponses suivantes:Analyser les codes d'état HTTP pour interagir avec l'API

HTTP/1.1 401 Unauthorized 
HTTP/1.1 403 Forbidden 
HTTP/1.1 404 Not Found 
HTTP/1.1 410 Gone 

Je dois être en mesure de reconnaître que la réponse est accordée, et, si son 401 ou 410, pour continuer, mais, si elle est 401 ou 403, pour garder une trace et arrêter le script après quelques-uns d'affilée (parce que j'ai dépassé ma limite d'appel pour la journée).

Mon code est assez simple:

for($i = $start;$i < $end;$i++) 
{ 
    // construct the API url 
    $url = $base_url.$i.$end_url; 
    // make sure that the file is accessible 
    if($info = json_decode(file_get_contents($url))) 
    { 
     // process retrieved data 
    } else { 
     // what do I put here? 
    } 
} 

Mon problème est que je ne sais pas quoi mettre dans la boucle 'autre. J'utilise le framework CodeIgniter, si quelqu'un connaît les raccourcis à utiliser. En outre, je suis ouvert à l'utilisation de cURL, mais je ne l'ai jamais fait auparavant.

Répondre

5

Ceci est un bon travail pour regex que les statuts sont toujours sous forme de version code text:

$matches = array(); 
preg_match('#HTTP/\d+\.\d+ (\d+)#', $http_response_header[0], $matches); 
echo $matches[1]; // HTTP/1.1 410 Gone return 410 

preg_match

$http_response_header

+1

Vous devez d'abord besoin d'obtenir la chaîne de statut. Je ne pense pas que cela réponde à la question. [edit] Ok, vous avez ajouté le '$ http_response_header', je me sens maintenant volé. – Savageman

+0

Je l'ai ajouté Savageman :) Je pense qu'il était implicite dans sa question comment analyser le code de l'en-tête de statut ainsi. – webbiedave

+0

lol. Désolé Savageman mais j'ai ajouté cela avant que j'ai vu votre réponse. Vous pouvez vérifier l'historique des révisions et vous le verrez ici. Ne vous sentez pas volé. Ca m'arrive tout le temps. Je vole aussi le vôtre. – webbiedave