Код | Расшифровка | Описание |
100 | Continue | Сервер сообщает, что начальные данные получены. |
101 | Switching Protocols | Сервер переключает протоколы в соответствии с поступившем требованием клиента. |
200 | Ok | Запрос был успешно обработан. |
201 | Created | Этот код передаётся при создании нового url. |
202 | Accepted | Запрос получен, но ещё не обработан. При этом нельзя сказать наверняка, будет ли запрос в конечном итоге успешно обработан. В дополнение к ответу, сервер может также передать дополнительную информацию о транзакции. |
203 | Non-Authoritative Information | Информация в заголовке содержимого взята из локальной копии или из другого источника, а не с исходного сервера. |
204 | No Content | Код состояния получен, но тело содержимого отсутствует. При данном ответе браузер не обновляет содержимое страницы. |
205 | Reset Content | Требуется очистить форму, используемую в передаче данных, для дополнительных данных. |
206 | Partial Content | Сервер вернул не все данные из требуемых. Данный код может быть получен, если указан заголовок Range |
300 | Multiple Choices | Затребованный url обозначает более одного ресурса. |
301 | Moved Permanently | Затребованный адрес устарел и более не используется. |
302 | Moved Temporarily | Затребованные данные временно перемещены. |
303 | See Other | Затребованные данные нужно искать по другому адресу. |
304 | Not Modified | Данные с указанной даты не изменялись. |
305 | Use Proxy | Доступ к адресу должен осуществляться только через прокси сервер. |
400 | Bad Request | Сервер обнаружил синтаксическую ошибку в запросе. |
401 | Unauthorized | Пославший запрос пользователь не имеет необходимых полномочий. |
402 | Payment Required | не реализовано |
403 | Forbidden | Запрос отклонен сервером. |
404 | Not Found | Документ по указанному пути не найден. |
405 | Method Not Allowed | Метод запроса не поддерживается для данного url. |
406 | Not Acceptable | Ресурс существует, однако, выбран не тот формат. |
407 | Proxy Authentication Required | Прокси сервер не санкционировал данный запрос. |
408 | Request Time-out | Время ожидания запроса было превышено. |
409 | Conflict | Данный запрос конфликтует с другим. |
410 | Gone | Запрошенный документ был навсегда удалён и более не доступен. |
411 | Length Required | Необходимо указать заголовок Content-Length, иначе запрос будет отклонён. |
412 | Precondition Failed | Условие, указанное в запросе, ложно. |
413 | Request Entity Too Large | Тело запроса слишком велико. |
414 | Request-URI Too Long | Слишком длинный url запроса. |
415 | Unsupported Media Type | Неверный формат тела запроса. |
500 | Internal Server Error | Отказ скрипта или конфигурации. |
501 | Not Implemented | Сервер не может выполнить данное действие. |
502 | Bad Gateway | Получил недопустимый ответ от другого сервера. |
503 | Service Unavailable | Служба временно недоступна. |
504 | Gateway Time-out | Аналогично 408 для шлюза. |
505 | HTTP Version not supported | Сервер не поддерживает версию http протокола, использованную в запросе. |
Получение данных PHP cURL (curl_init, curl_setopt)
Примеры использования cURL в PHP
Содержание:
- GET запрос с помощью Curl
- GET-запрос Curl с параметрами
- Curl POST запрос
- Отправка CURL JSON через POST-запрос
- CURL PUT запрос
- CURL DELETE запрос
- CURL запрос через proxy
- Отправка файлов на другой сервер через CURL
- Отправка несколько файлов на другой сервер с помощью библиотеки Curl
- CURL отправка файла методом PUT (так загружаются файлы в REST API)
- Скачивание файлов CURLOPT_FILE
- Отправить и получить cookie через curl
- Имитация браузера через CURLOPT_HTTPHEADER
- HTTP авторизация через PHP CURL
- Получить HTTP код ответа сервера на PHP
- Загрузка через FTP с помощью cURL
Примеры использования cURL для реализации программных модулей при создании сайтов.
PHP библиотека cURL – предназначена для получения и передачи данных через протоколы: HTTP, FTP, HTTPS. Библиотека cURL и ее расширение для PHP libcURL — полезный инструмент при решении имитации запросов веб браузеров. В данной статье рассмотрим несколько практических применений PHP cURL.
Параметры Curl — curl_setopt
- CURLOPT_RETURNTRANSFER — вернуть ответ в виде строки, вместо того, чтобы показывать его сразу
- CURLOPT_CONNECTTIMEOUT — сколько по времени ждать ответа
- CURLOPT_TIMEOUT — сколько секунд будет выполняться cURL запрос
- CURLOPT_USERAGENT — headers (заголовки) для запроса
- CURLOPT_URL — URL куда будет отправлен запрос
- CURLOPT_POST — отправить POST запрос
- CURLOPT_POSTFIELDS — массив POST полей к запросу
GET запрос с помощью Curl
GET-запрос Curl с параметрами
Curl POST запрос
Отправка CURL JSON через POST-запрос
CURL PUT запрос
CURL DELETE запрос
CURL запрос через proxy
Отправка файлов на другой сервер через CURL
Отправка несколько файлов на другой сервер с помощью библиотеки Curl
CURL отправка файла методом PUT (так загружаются файлы в REST API)
Скачивание файлов CURLOPT_FILE
Пример позволяет сохранить результат в файл, указав указатель на открытый файл в параметре CURLOPT_FILE.
Второй вариант скачивания файла:
Отправить и получить cookie через curl
Чтобы сохранить куки в файле достаточно прописать путь в параметрах CURLOPT_COOKIEFILE и CURLOPT_COOKIEJAR.
Передать значение cookie через параметр CURLOPT_COOKIE
Имитация браузера через CURLOPT_HTTPHEADER
На многих сайтах существует защита от получения данных скриптом. Такая защита основана на том что браузер передает серверу заголовки: user agent, referer, cookie. Сервер проверяет эти данные и если он не попадают под фильтр — возвращает страницу сайта. При обычном подключение php curl эти данные не передаются и для этого нужно в параметрах добавить заголовки:
HTTP авторизация через PHP CURL
Basic Authorization
Если на сервере настроена HTTP авторизация, например с помощью .htpasswd, подключится к нему можно с помощью параметра CURLOPT_USERPWD.
OAuth авторизация
Получить HTTP код ответа сервера на PHP
Загрузка через FTP с помощью cURL
Помогла ли вам статья?
362
раз уже помогла
Комментарии: (0)
Получение curl для вывода кода состояния HTTP?
Я использую curl
в командной строке Linux для отправки HTTP-запросов. Тела ответов распечатываются по стандарту, и это нормально, но я не вижу на странице руководства, как получить curl для печати кода состояния HTTP из ответа (404, 403 и т. д.). Это возможно?
- http
- curl
- статус
4
Это должно сработать для вас , если веб-сервер может отвечать на запросы HEAD (это не будет выполнять запрос GET
):
curl -I http://www.example.org
В качестве дополнения, чтобы cURL следовал за перенаправлениями (статусы 3xx), добавьте -L
.
12
Более конкретный способ распечатать просто код состояния HTTP выглядит примерно так:
curl -s -o /dev/null -w "%{http_code}" http://www.example. орг/
С ним намного проще работать в сценариях, так как он не требует синтаксического анализа 🙂
Параметр -I
может быть добавлен для повышения производительности загрузки ответов. Это изменит вызов на вызов HEAD
, который будет извлекать только служебные данные ответа, без тела.
Примечание: %{http_code}
возвращает первую строку полезной нагрузки HTTP (доступные переменные для параметра -w
на странице документации curl
)
т.е.:
curl -s -o /dev/null -I -w "%{http_code}" http://www.example.org/
21
Вы можете распечатать код состояния в дополнение ко всем заголовкам, выполнив следующие действия:
curl -i http://example.org
Преимущество -i
в том, что оно работает и с -X POST
.
7
Если вы хотите увидеть заголовок, а также результат, вы можете использовать подробный вариант:
curl -v http://www.example.org curl --verbose http://www.example.org
Статус появится в шапке. Например.
< Дата: вторник, 04 ноября 2014 г., 19:12:59 по Гринвичу < Тип содержимого: приложение/json; кодировка = utf-8 < Статус: 422 Необрабатываемый объект
4
Если вы хотите зафиксировать код состояния HTTP в переменной, но при этом перенаправить содержимое в STDOUT, вы должны создать два STDOUT. Вы можете сделать это с помощью замены процесса >() и замены команды $().
Сначала создайте файловый дескриптор 3
для вашего текущего процесса STDOUT с exec 3>&1
.
Затем используйте параметр curl -o
, чтобы перенаправить содержимое ответа во временный fifo с помощью подстановки команд, а затем в рамках этой подстановки команд перенаправьте вывод обратно в дескриптор файла STDOUT текущего процесса 3
с -o >( кот >&3)
.
Собираем все вместе в bash
3.2.57(1)-выпуск
(стандарт для macOS
):
# создает новый файловый дескриптор 3, который перенаправляет на 1 (STDOUT) выполнить 3>&1 # Запускаем curl в отдельной команде, записывая вывод -w "%{http_code}" в HTTP_STATUS # и отправить содержимое в STDOUT этой команды с помощью -o >(cat >&3) HTTP_STATUS=$(curl -w "%{http_code}" -o >(cat >&3) 'http://example. com')
Обратите внимание, что это не работает в /bin/sh
, как отметил SamK в комментариях ниже.
8
Переопределить вывод curl:
curl -sw '%{http_code}' http://example.org
Может использоваться с любым типом запроса.
2
Код состояния ТОЛЬКО
[0]$ curl -LI http://www.example.org -o /dev/null -w '%{http_code}\n' -s [0]$ 200
Все кредиты этого GIST
2
Это болезненный завиток --fail
ограничение. Из чел
:
-f, --сбой
(HTTP) Автоматический сбой (вообще нет вывода) при ошибках сервера
Но невозможно получить как ненулевой код возврата , так и тело ответа в стандартном выводе.
Основываясь на ответе pvandenberk и этом другом очень полезном трюке, изученном на SO, вот обходной путь:
curl_with_error_code () { _curl_with_error_code "$@" | sed '$d' } _curl_with_error_code () { локальный curl_error_code http_code выполнение 17>&1 http_code=$(curl --write-out '\n%{http_code}\n' "$@" | tee /dev/fd/17 | tail -n 1) curl_error_code=$? выполнение 17>&- если [ $curl_error_code -ne 0 ]; затем вернуть $curl_error_code фи если [$http_code -ge 400] && [$http_code -lt 600]; затем echo "HTTP $http_code" >&2 вернуться 127 фи }
Эта функция ведет себя точно так же, как curl
, но возвращает 127 (код возврата, не используемый curl
) в случае HTTP-кода в диапазоне [400, 600[.
3
Это отправит запрос на URL, получит только первую строку ответа, разделит ее на блоки и выберет вторую.
Содержит код ответа
curl -I http://example.org 2>/dev/null | голова -n 1 | вырезать -d$'' -f2
2
Для запроса POST сработало следующее:
curl -w 'RESP_CODE:%{код_ответа}' -s -X POST --data '{"asda":"asd"}' http://example.com --header "Content-Type:application/json"|grep -o 'RESP_CODE:[1-4][0-9][0-9]'
Используйте следующую команду cURL и передайте ее в grep следующим образом:
$ curl -I -s -L http://example.com/v3/get_list | grep "HTTP/1.1"
Вот что делает каждый флаг:
-
-I
: Показать только заголовки ответа -
-s
: Без звука - Не показывать индикатор выполнения -
-L
: СледуйтеМестоположение:
заголовки
Вот ссылка на коды состояния HTTP.
Запуск из командной строки. Этот curl работает в тихом режиме, следует любым перенаправлениям, получает заголовки HTTP. grep выведет код состояния HTTP на стандартный вывод.
Вот некоторая команда curl, которая использует GET
и возвращает код HTTP.
curl -so /dev/null -w '%{код_ответа}' http://www.example.org
Помните, что в приведенном ниже подходе используется HEAD
, что быстрее, но может плохо работать с некоторыми HTTP-серверами, несовместимыми с Интернетом.
curl -I http://www.example.org
2
curl -so -i /dev/null -w "%{http_code}" http://www.any_example.com
Будет возвращена следующая информация:
- данные ответа, если какие-либо данные возвращаются API, например ошибка
- код состояния
2
Пример использования кодов ответов. Я использую это для повторной загрузки баз данных Geolite, только если они изменились ( -z
), а также следующие перенаправления ( -L
):
url=http://example.com/file.gz файл=$(базовое имя $url) ответ=$(curl -L -s -o $file -z $file $url -w "%{http_code}") case "$response" в 200) сделать что-то ;; 301) сделать что-то ;; 304) printf "Получено: ответ HTTP $ (файл без изменений) ==> $url\n" ;; 404) printf "Получено: ответ HTTP $ (файл не найден) ==> $url\n" ;; *) printf "Получено: HTTP $response ==> $url\n" ;; эсак
Разделить вывод содержимого на stdout
и код состояния HTTP на stderr
:
curl http://www.example.org -o >(cat >&1) -w "%{http_code}\n" 1> &2
Если для stderr требуется только код состояния HTTP, можно использовать --silent
:
curl --silent http://www.example.org -o >(cat >&1) -w "%{http_code }\n" 1>&2
Затем нужный поток можно выбрать, перенаправив ненужный на /dev/null
:
$ (curl --silent http://www. example.org -o >(cat >&1) -w "%{http_code}" 1>&2) 1>/dev/null 200 $ (curl --silent http://www.example.org -o >(cat >&1) -w "%{http_code}" 1>&2) 2>/dev/null ...
Обратите внимание , что для того, чтобы второе перенаправление работало так, как нужно, нам нужно запустить команду curl в подоболочке.
2
OP хочет знать код состояния. Часто при загрузке файла вы также хотите получить представление о его размере, поэтому я сначала использую curl, чтобы показать код состояния и размер файла, а затем отключить подробный и направить файл в нужное место и имя:
curl -R -s -S -w "\nhttp: %{http_code} %{size_download}\n" -o /Users/myfiles/the_local_name.html http://archive.onweb.com/the_online_name.html
Затем я жду окончания завитка
ожидание ${!}
, прежде чем я выполню следующую команду. Вышеприведенное при использовании в сценарии многих команд, подобных приведенным выше, дает хороший ответ, например:
.
http: 200 42824
http: 200 34728
http: 200 35452
Обратите внимание, что за -o в curl должен следовать полный путь к файлу + имя файла. Это позволяет вам таким образом сохранять файлы в разумной структуре имен, когда вы выполняете их d/l с помощью curl. Также обратите внимание, что совместное использование -s и -S отключает вывод, но показывает ошибки. Также обратите внимание, что -R пытается установить временную метку файла на временную метку веб-файла. 9[ \t]*//'
- 2>&1: ошибка сохраняется в выводе для синтаксического анализа
- grep: отфильтровать строку кода ответа из вывода
- awk: отфильтровывает код ответа из строки кода ответа
- sed: удаляет все начальные пробелы
.
Существует еще один способ использования команды Powershell, которая является псевдонимом curl.exe.
Просто введите следующее:
(Invoke-WebRequest -Uri https://your.website).StatusCode
В Windows PowerShell:
curl https:\\www. example.org -Method HEAD
На самом деле это просто псевдоним для Invoke-WebRequest
.
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя адрес электронной почты и пароль
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания, политикой конфиденциальности и политикой использования файлов cookie
.
AWS SDK для PHP | SDK AWS для PHP
ПРИМЕЧАНИЕ. Версию 3 AWS SDK для PHP см.
Руководство пользователя V3
и Справочник по API V3.
AWS SDK для PHP позволяет PHP-разработчикам легко работать с Amazon Web Services и создавать
масштабируемые решения с Amazon S3, Amazon DynamoDB, Amazon Glacier и другими. Вы можете начать работу за считанные минуты,
установка SDK через Composer
или загрузив один zip или
фар файл.
- Руководство пользователя
- Домашняя страница SDK
- Форум
- Проблемы
- Упаковщик/Композитор
- Руководство по вкладу
- Лицензия
Имя службы | Пространство имен | Версии |
---|---|---|
AWS CloudFormation | Aws\CloudFormation | 15 мая 2010 г. (последняя) |
AWS CloudTrail | Aws\CloudTrail | 01.11.2013 (последняя) |
AWS CodeCommit | AWS\CodeCommit | 13 апреля 2015 г. (последняя) |
AWS CodeDeploy | Aws\CodeDeploy | 06.10.2014 (последняя) |
AWS CodePipeline | Aws\CodePipeline | 09.07.2015 (последняя) |
AWS Config | Aws\ConfigService | 2014-11-12 (последняя) |
Конвейер данных AWS | Aws\DataPipeline | 29 октября 2012 г. (последняя) |
Ферма устройств AWS | Aws\DeviceFarm | 23 июня 2015 г. (последняя) |
AWS Direct Connect | Aws\DirectConnect | 25 октября 2012 г. (последняя версия) |
Служба каталогов AWS | Aws\DirectoryService | 16 апреля 2015 г. (последняя) |
AWS Elastic Beanstalk | Aws\ElasticBeanstalk | 01. 12.2010 (последняя) |
AWS Identity and Access Management | Aws\Iam | 08.05.2010 (последняя) |
Импорт/экспорт AWS | AWS\ImportExport | 01.06.2010 (последняя) |
Служба управления ключами AWS | Aws\Kms | 01.11.2014 (последняя) |
AWS Lambda | AWS\Lambda | 31 марта 2015 г. (последняя) |
AWS OpsWorks | Aws\OpsWorks | 18 февраля 2013 г. (последняя) |
Служба токенов безопасности AWS | Aws\Sts | 15 июня 2011 г. (последняя) |
Шлюз хранилища AWS | Aws\StorageGateway | 30 июня 2013 г. (последняя версия) |
Служба поддержки AWS | Служба поддержки AWS | 15 апреля 2013 г. (последняя) |
Amazon CloudFront | Aws\CloudFront | 28 января 2016 г. (последняя версия), 05 мая 2012 г. |
Amazon CloudHSM | Aws\CloudHsm | 30 мая 2014 г. (последняя) |
Amazon CloudSearch | Aws\CloudSearch | 01.01.2013 (последняя), 01.02.2011 |
Домен Amazon CloudSearch | Aws\CloudSearchDomain | 01.01.2013 (последняя) |
Amazon CloudWatch | Aws\CloudWatch | 01.08.2010 (последняя) |
Журналы Amazon CloudWatch | Aws\CloudWatchLogs | 28 марта 2014 г. (последняя) |
Amazon Cognito Identity | Aws\CognitoIdentity | 30 июня 2014 г. (последняя) |
Amazon Cognito Sync | Aws\CognitoSync | 30 июня 2014 г. (последняя) |
Amazon DynamoDB | Aws\DynamoDb | 10 августа 2012 г. (последняя), 05 декабря 2011 г. |
Потоки Amazon DynamoDB | Aws\DynamoDbStreams | 2012-08-10 (последняя) |
Amazon EC2 Container Service | Aws\Ecs | 13 ноября 2014 г. (последняя) |
Amazon ElastiCache | Aws\ElastiCache | 02 февраля 2015 г. (последняя) |
Amazon Elastic Compute Cloud | Aws\Ec2 | 01.10.2015 (последняя) |
Amazon Elastic File System | Aws\ElasticFileSystem | 01.02.2015 (последняя) |
Amazon Elastic MapReduce | Aws\Emr | 31 марта 2009 г. (последняя версия) |
Amazon Elastic Transcoder | Aws\ElasticTranscoder | 25 сентября 2012 г. (последняя версия) |
Ледник Амазонки | Aws\Glacier | 01.06.2012 (последняя) |
Amazon Kinesis | Aws\Kinesis | 02.12.2013 (последняя) |
Машинное обучение Amazon | Aws\MachineLearning | 2014-12-12 (последняя) |
Amazon Redshift | Aws\Redshift | 01.12.2012 (последняя) |
Служба реляционной базы данных Amazon | Aws\Rds | 31 октября 2014 г. (последняя) |
Amazon Route 53 | Aws\Route53 | 01.04.2013 (последняя) |
Amazon Route 53 домена | Aws\Route53Domains | 15 мая 2014 г. (последняя) |
Amazon Simple Email Service | Aws\Ses | 01.12.2010 (последняя) |
Amazon Simple Notification Service | Aws\Sns | 31 марта 2010 г. (последняя) |
Amazon Simple Queue Service | Aws\Sqs | 05.11.2012 (последняя) |
Amazon Simple Storage Service | Aws\S3 | 01.03.2006 (последняя) |
Amazon Simple Systems Management Service | Aws\Ssm | 06.11.2014 (последняя) |
Amazon Simple Workflow Service | Aws\Swf | 25 января 2012 г. (последняя версия) |
Amazon SimpleDB | Aws\SimpleDb | 15 апреля 2009 г. (последняя) |
Amazon WorkSpaces | Aws\WorkSpaces | 08. |