Парсинг HTTP-кодов состояния для взаимодействия с API - PullRequest
2 голосов
/ 14 октября 2010

Я создаю скрипт на PHP для взаимодействия с API, и мне нужно иметь возможность анализировать код состояния HTTP, который мне дает API.По большей части, он дает один из следующих ответов:

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

Мне нужно иметь возможность распознать, какой ответ дается, и, если его 401 или 410, продолжать, но, еслиэто 401 или 403, чтобы отслеживать и выключать скрипт через несколько раз подряд (потому что я превысил мой предел вызовов за день).

Мой код довольно прост:

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?
     }
}

Моя проблема в том, что я не знаю, что включить в цикл else.Я использую платформу CodeIgniter, если кто-нибудь знает какие-либо ярлыки для использования.Кроме того, я открыт для использования cURL, но никогда раньше не делал.

Ответы [ 2 ]

5 голосов
/ 14 октября 2010

Это хорошая работа для регулярных выражений, так как статусы всегда имеют вид 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

2 голосов
/ 14 октября 2010
...