Обработка заголовков HTTP, отправленных с помощью curl - PullRequest
0 голосов
/ 13 декабря 2011

В настоящее время я пытаюсь реализовать oAuth на стороне сервера, чтобы предоставить API для разработчиков.У меня очень простая проблема.Я хочу иметь возможность обрабатывать заголовки HTTP, отправленные в сценарий под названием request.php.

Понятия не имею, как мне это сделать.Я пишу обертку для клиентов и пытаюсь сделать http-вызов на request.php с помощью curl.

    $data = array('name' => 'Foo');

    $header = array('Content-type: text/plain', 'Content-length: 100');
    $ch = curl_init("test");

    curl_setopt($ch, CURLOPT_URL, 'http://localhost/api/request.php');
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header);

    $res = curl_exec($ch);

    $headers = curl_getinfo($ch);

    curl_close($ch);

Итак, в $ headers я получил заголовки http-ответов, но я хочу сделать следующее:обработка заголовков, полученных request.php.

Ответы [ 2 ]

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

Вы должны использовать

curl_setopt($s, CURLOPT_HEADER, true);

. Это приведет к тому, что $res в вашем коде будет иметь как заголовки, так и данные, разделенные на 2 CRLF (всего 4 символа, как определено вСтандарты HTTP).

Пример ответа HTTP,

HTTP/1.0 302 Found
Content-Type: text/html; charset=UTF-8
Content-Length: 11782
Date: Tue, 13 Dec 2011 15:07:19 GMT
Server: GFE/2.0

<!DOCTYPE html>
<html>
(...)
</html>
0 голосов
/ 05 июля 2013

Используйте curl_getinfo для чтения заголовков. Для этого не нужно устанавливать (CURLOPT_HEADER, true).

Например:

    ...
    curl_setopt($this->ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $params);

    $response = curl_exec($this->ch);
    $httpCode = curl_getinfo($this->ch, CURLINFO_HTTP_CODE);
...