cURL - это модуль для PHP, позволяющий отправлять/получать запросы по http.
Принцип работы cURL
При использовании cURL-запросов существует 4 основных шага, которые должны быть в скрипте, это:
- Инициализация
- Назначение параметров
- Выполнение и выборка результата
- Освобождение памяти
Пример отправки запроса через cURL
// 1. инициализация
$ch = curl_init();
// 2. указываем параметры, включая url
curl_setopt($ch, CURLOPT_URL, "http://intop24.ru");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
// 3. получаем HTML в качестве результата
$output = curl_exec($ch);
// 4. закрываем соединение
curl_close($ch);
Проверка работы
Чтобы не нагружать сервер вычислениями, нужно всегда проверять результат функции curl_exec()
$output = curl_exec($ch);
// А вдруг ошибочка?
if ($output === FALSE) {
//Тут-то мы о ней и скажем
echo "cURL Error: " . curl_error($ch);
return;
}
Результат
//Выполняем запрос
curl_exec($ch);
//Получаем информацию о запросе
$info = curl_getinfo($ch);
//Выводим какую-то информацию
echo 'Запрос выполнился за ' . $info['total_time'] . ' сек. к URL: ' . $info['url'];
Весь список параметров, которые можно получить в результате cURL-запроса:
Индекс массива | Значение | Индекс массива | Значение |
---|---|---|---|
url | string(17) "http://intop24.ru" | content_type | string(24) "text/html; charset=utf-8" |
http_code | int(200) | header_size | int(218) |
request_size | int(49) | filetime | int(-1) |
ssl_verify_result | int(0) | redirect_count | int(0) |
total_time | float(0.009419) | namelookup_time | float(1.3E-5) |
connect_time | float(1.3E-5) | pretransfer_time | float(1.4E-5) |
size_upload | float(0) | size_download | float(46523) |
speed_download | float(4939271) | speed_upload | float(0) |
download_content_length | float(-1) | upload_content_length | float(0) |
starttransfer_time | float(0.009374) | redirect_time | float(0) |
certinfo | array(0) { } | redirect_url | string(0) "" |
Отправка POST-запроса
$url = "http://unreal-stuff.ru/post.php";
$post_data = array (
"foo" => "bar",
"query" => "Nettuts",
"action" => "Submit"
);
$ch = curl_init();
curl_setopt_array($ch,
array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query($post_data)
)
);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
http_build_query используется для формирования строки параметров из массива. Без него, запрос криво выполнится
Отправка заголовков
curl_setopt($ch, CURLOPT_HEADER, 1); //выставляем отправку заголовков
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: AccessToken 324jg54jg4058yhj',
'X-User-Authorization: Basic password',
'Content-Type: application/json;charset=UTF-8',
'Accept: application/json;charset=UTF-8'
));
Указание метода
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');