cURL PHP – это библиотека функций PHP предназначенная для получения и передачи данных через такие протоколы, как HTTP, FTP, HTTPS. Библиотека используется для получения данных в виде XML, JSON и непосредственно в HTML, парсинга, загрузки и передачи файлов и т.д. Посылать HTTP запросы можно методами GET, POST, PUT, DELETE.

Официальная документация.

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

$ch = curl_init('https://example.com/v1/users');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

$response = curl_exec($ch);
$errorCode = curl_errno($ch);
$errorText = curl_error($ch);
$info = curl_getinfo($ch);
curl_close($ch);

print_r(json_decode($response, true));

Получим пользователя по его ID:

$url = 'https://example.com';
$version = 'v1';
$resource = 'users';

$params = [
  'id' => 2200,
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, sprintf(
  "%s/%s/%s?%s", $url, $version, $resource, http_build_query($params)
));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
curl_close($ch);

print_r(json_decode($response, true));

POST запрос

Добавление пользователя:

$url = 'https://example.com';
$version = 'v1';
$resource = 'users';
$token = '876ef885733d24f5bc449f1611d2d1739a6ef56ca8a760f4bfa3610374101e58';

$params = [
  'email'  => 'test@mail.com',
  'name'   => 'John Smith',
  'gender' => 'male',
  'status' => 'active',
];

$headers = [
  'Content-Type: application/json',
  'Authorization: Bearer ' . $token
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, sprintf(
  "%s/%s/%s", $url, $version, $resource
));
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$response = curl_exec($ch);
curl_close($ch);

print_r(json_decode($response, true));

Изменение пользователя по его ID:

$url = 'https://example.com';
$version = 'v1';
$resource = 'users/2200';
$token = '876ef885733d24f5bc449f1611d2d1739a6ef56ca8a760f4bfa3610374101e58';

$params = [
  'email'  => 'test_update@mail.com'
];

$headers = [
  'Content-Type: application/json',
  'Authorization: Bearer ' . $token
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, sprintf(
  "%s/%s/%s?%s", $url, $version, $resource, http_build_query($params)
));

curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
curl_close($ch);

print_r(json_decode($response, true));

Удаление пользователя по его ID:

$url = 'https://example.com';
$version = 'v1';
$resource = 'users/2200';
$token = '876ef885733d24f5bc449f1611d2d1739a6ef56ca8a760f4bfa3610374101e58';

$headers = [
  'Content-Type: application/json',
  'Authorization: Bearer ' . $token
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, sprintf(
  "%s/%s/%s", $url, $version, $resource
));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
curl_close($ch);

print_r(json_decode($response, true));
$url = 'https://example.com/auth.php';
$login = 'admin';
$password = 'password';

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$login:$password");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$response = curl_exec($ch);
curl_close($ch);

print_r(json_decode($response, true));
$url = 'https://example.com';
$version = 'v1';
$resource = 'users';

$headers = [
  'Content-Type: application/json',
  'Authorization: Bearer YOUR-TOKEN'
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, sprintf(
    "%s/%s/%s", $url, $version, $resource
));
curl_setopt($ch, CURLOPT_TIMEOUT, 0);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BEARER);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
curl_close($ch);

print_r(json_decode($response, true));
$headers = [
  'Content-Type: application/json',
  'Authorization: OAuth YOUR-TOKEN'
];
$ch = curl_init('https://example.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_exec($ch);

$errorCode = curl_errno($ch); // код последней ошибки
$errorText = curl_error($ch); // описание последней ошибки
$info = curl_getinfo($ch);    // дополнительная информация о сеансе
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); // код ответа сервера
curl_close($ch);

print_r($info);
print_r($http_code);