Как принять значения ответа заголовка http в переменной? - PullRequest
0 голосов
/ 23 декабря 2011

У меня следующий ответ, отправленный с сервера. Как извлечь часть строки www-authenticate в переменную с именем $ realm, $ nonce, $ opaque?

Следующий вывод генерируется запросом curl, и я печатаю заголовки ответа:

HTTP/1.1 401 Unauthorized
Cache-Control: private
Date: Fri, 23 Dec 2011 05:49:41 GMT
Content-Length: 0
Content-Type: text/html
WWW-Authenticate: Digest realm="users@mris.com", nonce="3133323436313933383137343820335916269c13227f30b07bd83a1c7e0d", opaque="6e6f742075736564"
RETS-Version: RETS/1.5
X-Powered-By: Servlet/2.5 JSP/2.1

Ответы [ 3 ]

1 голос
/ 23 декабря 2011

Сначала разберем заголовки в общий массив:

$headers = explode("\n", $headers);
foreach ($headers as $header) {
    list($key, $value) = explode(': ', $header, 2);
    $headers[$key] = $value;
}

Затем проанализируйте заголовок WWW-Authenticate примерно так:

$params = array();
preg_match_all('/(\w+)="([^"]+)"/', $headers['WWW-Authenticate'], $matches, PREG_SET_ORDER);
foreach ($matches as $match) {
    $params[$match[1]] = $match[2];
}
0 голосов
/ 23 декабря 2011
$headers = getallheaders();
preg_match_all('/\"([^"])*\"/', $headers['WWW-Authenticate'], $matches);
print_r($matches);

Он получает заголовки с помощью getallheaders (), выбирает ваш www-auth, а затем фильтрует каждое значение между кавычками в массиве $ match с помощью регулярного выражения. Получите доступ к своим значениям через $ match [0] и т. Д.

0 голосов
/ 23 декабря 2011

Используя функцию get_headers http://es2.php.net/get_headers, вы можете получить массив со значениями заголовка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...