You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

4.6 KiB

LE_CURL

© by Pavel Belyaev, LE Framework, Tech-Research.ru

About

Данный класс создан для выполнения http запросов, удобно для работы с RestApi, для скачивания любого контента по сети итд...

Я использую этот класс для работы с Api яндекс облака, VKApi и например для мониторинга страниц сайта (какие коды отдает, корректен ли ответ), CURL вообще очень удобная штука, этот класс лишь обертка для удобства

Для корректной работы требуются модули iconv и curl

How to use

Инициализация

Данный класс в автозагрузке, файл можно не подключать

$CL = new LE_CURL;

Настройки

$CL->timeout = 90; //default=40
$CL->debug=1; //default 0
$CL->user_agent="MyBrowser"; // default = chrome 24
$CL->encode="cp1251"; // при указании перекодирует из указанной кодировки в utf8, по умолчанию пытается определить из заголовка
$CL->cook_file="/path/to/cook.txt"; //если не указать, то куки не будет принимать

Выполнение запросов

Простой запрос GET

$params = [
  'url'=>'https://example.com/index.php',
  'fer'=>'https://fromsite' // указание HTTP_REFERRER
];

$html = $CL->query($params);

или вместо массива можно сразу строку передать, если других параметров не будет

$html = $CL->query("https://example.com/index.php");

Получение redirect_url

Данное действие иногда нужно для того, чтобы распарсить URL на который будет переадресован запрос, к примеру ВК всякие токены выдает редиректом на указанную страницу с дописыванием параметров

$params = [
  'url'=>'https://example.com/index.php',
  'get_redirect'=>1
];

$CL->query($params);

$url = $CL->redirect;

Отправка простого POST (form)

$post = ['field1'=>'val1','field2'=>'val2'];

$params = [
  'url'=>'https://example.com/index.php',
  'post'=>$post
];

$res = $CL->query($params);

Отправка другими методами, например, PUT

$post = ['field1'=>'val1','field2'=>'val2'];

$params = [
  'url'=>'https://example.com/index.php',
  'post'=>$post,
  'method'=>'PUT'
];

$res = $CL->query($params);

Отправка не в полях POST, а, например, JSON

$data = "{'field1':'val1','field2':'val2'}"; //юзайте json_encode

$params = [
  'url'=>'https://example.com/index.php',
  'raw'=>$data,
  'method'=>'PUT' //указание метода обязательно, например POST
];

$res = $CL->query($params);

Отправка файлов через POST

не тестировал еще

$file1 = curl_file_create($filename ,$mime_type = null , $posted_filename = null );

$post = ['field1'=>'val1','field2'=>'val2','image'=>$file1];

$params = [
  'url'=>'https://example.com/index.php',
  'post'=>$post,
  'headers' => ["Content-Type" => "multipart/form-data"] 
];

$res = $CL->query($params);

Сохранение в файл, например, скачать картинку или страницу сайта в файл

$CL->to_file($params,$path,$filename);
  • $params - может быть строкой с url или списком параметров, вдруг вам нужно заголовки или REFERRER передать свой
  • $path - папка сохранения
  • $filename - имя файла в который сохранится, если не передано, то определит из url

Параметры выполнения запросов

Параметр Описание Тип
url Полный url с указанием протокола string
headers Заголовки запроса array
get_redirect Получение url редиректа bool
method указание метода (PUT,DEL,POST,GET) string
post Поля POST array
raw Данные отправляемые в body как есть, например, JSON string