2017-02-01 14 views
4

Я новичок в PHP. Я пытаюсь получить заголовок от ответа после отправки запроса POST php curl. Клиент отправляет запрос на сервер, а сервер отправляет ответ с заголовком. Вот как я отправил свой запрос POST.Получить заголовок из ответа PHP cURL

$client = curl_init($url); 
    curl_setopt($client, CURLOPT_CUSTOMREQUEST, "POST"); 
    curl_setopt($client, CURLOPT_POSTFIELDS, $data_string); 
    curl_setopt($client, CURLOPT_HEADER, 1); 
    $response = curl_exec($client); 
    var_dump($response); 

Вот ответ заголовок от сервера, что я получаю от браузера

HTTP/1.1 200 OK 
Date: Wed, 01 Feb 2017 11:40:59 GMT 
Authorization: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2Vycy9CYW9CaW5oMTEwMiIsIm5hbWUiOiJhZG1pbiIsInBhc3N3b3JkIjoiMTIzNCJ9.kIGghbKQtMowjUZ6g62KirdfDUA_HtmW-wjqc3ROXjc Content-Type: text/html;charset=utf-8 Transfer-Encoding: chunked Server: Jetty(9.3.6.v20151106) 

Как я могу извлечь Authorization часть из заголовка?. Мне нужно хранить его в печенье

+0

Использование например http://php.net/manual/en/function.preg-match.php –

+0

Разверните заголовки символами новой строки, взорвите каждую строку ':', проверьте, какой заголовок называется '' Авторизация '', возьмите его значение. – deceze

+0

Это может быть полезно - http://stackoverflow.com/a/11659510/297243 – Tom

ответ

8

Он преобразует все заголовки в массив

// create curl resource 
$ch = curl_init(); 

// set url 
curl_setopt($ch, CURLOPT_URL, "example.com"); 

//return the transfer as a string 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
//enable headers 
curl_setopt($ch, CURLOPT_HEADER, 1); 
//get only headers 
curl_setopt($ch, CURLOPT_NOBODY, 1); 
// $output contains the output string 
$output = curl_exec($ch); 

// close curl resource to free up system resources 
curl_close($ch); 

$headers=array(); 

$data=explode("\n",$output); 

$headers['status']=$data[0]; 

array_shift($data); 

foreach($data as $part){ 
    $middle=explode(":",$part); 
    $headers[trim($middle[0])] = trim($middle[1]); 
} 

//print all headers as array 
echo "<pre>"; 
print_r($headers); 
echo "</pre>"; 
-1

Вы просто включить эту кодировку в ваш локон запроса

curl_setopt($curl_exec, CURLOPT_HEADER, true); 
curl_setopt($curl_exec, CURLOPT_NOBODY, true); 

после завитка использования исполнения $header_data= curl_getinfo($curl_exec);

Затем вы получаете все заголовки

print_r($header_data); 

или использовать shell_exec

echo shell_exec("curl -I http://example.com "); 
+3

Это получает заголовок запроса, а не заголовок ответа. – anierzad