2015-07-01 2 views
-1

CLI CURL -> PHP CURL (получить только заголовок)Как я могу перевести эту команду curl, чтобы она работала в PHP-скрипте?

curl \ 
--head \ 
--request GET \ 
--silent \ 
--header 'Authorization: Bearer XXX' \ 
http://example.com/remote/foler/file.zip 

мне нужно получить только заголовок ответа без загрузки всего файла целиком каждый раз.

Мне также нужно использовать метод GET, потому что удаленный сервер ограничивает меня.

ответ

0

необходимо предпринять лишь несколько шагов. 1.Initialize 2. Установите параметры 3. Выполнить 4. Закройте соединение

<?php 

$url = "www.example.com"; 

//initilise 
$ch = curl_init(); 

//set the option 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HEADER, 1); 

//no body 
curl_setopt($ch, CURLOPT_NOBODY, 1); 

//set the method 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');  

// request header 
curl_setopt($ch, CURLINFO_HEADER_OUT, 1); 

//execute 
$result = curl_exec($ch); 
$information = curl_getinfo($ch); 

//close the connection 
curl_close($ch); 


echo '-- REQUEST HEADER --------------------------'.PHP_EOL; 
print_r($information['request_header']); 
echo '--------------------------------------------'.PHP_EOL; 
echo PHP_EOL; 
echo '-- RESPONSE HEADER -------------------------'.PHP_EOL; 
print_r($result); 
echo '--------------------------------------------'.PHP_EOL; 

Curl использует GET по умолчанию. Если вы хотите установить его методом POST, то опция CURLOPT_POST. Вы можете установить множество опций, посмотреть руководство по php.net.

+0

Спасибо, но мне нужно получить только заголовки ответов, а не тело. Удаленный zip-файл ~ 200 МБ, и я не хочу скачивать его каждый раз. Ваш код возврата заголовка + тело. – fox91

+0

Хорошо, только что отредактированный, если вы не хотите возвращать тело, вам нужно установить для параметра CURLOPT_NOBODY значение true. Надеюсь, это поможет. – monir009

+0

Как вы можете видеть из заголовка запроса, если для параметра CURLOPT_NOBODY установлено значение true, используется метод HEAD, а не GET. Мне нужно использовать GET. – fox91

0

Насколько я вижу, это не настоящий вопрос, это скорее задача. Ответ на это находится в руководстве по PHP http://php.net/manual/es/book.curl.php. Специально проверьте CURLOPT_HEADER.

Если у вас есть версия php, равная или выше 5.5, вы можете проверить http://guzzle.readthedocs.org/en/latest/overview.html как абстрактный слой над cURL.

И как всегда, выполните поиск внутри Stackoverflow, чтобы узнать, существует ли вопрос или что-то подобное: https://stackoverflow.com/search?q=curl+headers. Это поможет сохранить качество Вопросов, а также ответы.

+0

Я пробовал CURLOPT_HEADER, но менял метод запроса на HEAD. Как я писал, мне нужно, чтобы они использовали метод GET, но не хотят загружать файл. – fox91

Смежные вопросы