Как создать GET POST запросы с помощью PHP
- Как создать в PHP POST-запрос?
- Пояснение кода
- Использование file_get_contents для выполнения POST-запросов
- Использование fread для выполнения POST-запросов
- Как выполнить в PHP GET-запрос
- Использование fread для загрузки или получения файлов через интернет
- Использование file_get_contents для получения URL-адреса сайта
Как создать в PHP POST-запрос?
Первый метод, позволяющий выполнить PHP POST запрос, заключается в использовании file_get_contents. Второй метод будет использовать fread в сочетании с парой других функций. Оба варианта применяют функцию stream context create, чтобы заполнить необходимые поля заголовка запроса.
Пояснение кода
Переменная $sPD содержит данные, которые нужно передать. Она должна иметь формат строки HTTP-запроса, поэтому некоторые специальные символы должны быть закодированы.
И в функции file_get_contents, и в функции fread у нас есть два новых параметра. Первый из них - use_include_path. Так как мы выполняем HTTP- запрос, в обоих примерах он будет иметь значение false. При использовании значения true для считывания локального ресурса функция будет искать файл по адресу include_path.
Второй параметр - context, он заполняется возвращаемым значением stream context create, который принимает значение массива $aHTTP.
Использование file_get_contents для выполнения POST-запросов
Чтобы в PHP отправить POST запрос с помощью file_get_contents, нужно применить stream context create, чтобы вручную заполнить поля заголовка и указать, какая «обертка» будет использоваться - в данном случае HTTP:
$sURL = "http://brugbart.com/Examples/http-post.php"; // URL-адрес POST
$sPD = "name=Jacob&bench=150"; // Данные POST
$aHTTP = array(
'http' => // Обертка, которая будет использоваться
array(
'method' => 'POST', // Метод запроса
// Ниже задаются заголовки запроса
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $sPD
)
);
$context = stream_context_create($aHTTP);
$contents = file_get_contents($sURL, false, $context);
echo $contents;
Использование fread для выполнения POST-запросов
Для выполнения POST-запросов можно использовать функцию fread. В следующем примере stream context create используется для составления необходимых заголовков HTTP-запроса:
$sURL = "http://brugbart.com/Examples/http-post.php"; // URL-адрес POST
$sPD = "name=Jacob&bench=150"; // Данные POST
$aHTTP = array(
'http' => // Обертка, которая будет использоваться
array(
'method' => 'POST', // Request Method
// Ниже задаются заголовки запроса
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $sPD
)
);
$context = stream_context_create($aHTTP);
$handle = fopen($sURL, 'r', false, $context);
$contents = '';
while (!feof($handle)) {
$contents .= fread($handle, 8192);
}
fclose($handle);
echo $contents;
Как выполнить в PHP GET-запрос
Теперь мы уделим внимание использованию fread и file_get_contents для загрузки контента из интернета через HTTP и HTTPS. Чтобы использовать методы, описанные в этой статье, необходимо активировать опцию fopen wrappers. Для этого в файле php.ini нужно установить для параметра allow_url_fopen значение On.
Выполнение POST и GET запросов PHP применяется для входа в систему на сайтах, получения содержимого веб-страницы или проверки новых версий приложений. Мы расскажем, как выполнять простые HTTP-запросы.
Использование fread для загрузки или получения файлов через интернет
Помните, что считывание веб-страницы ограничивается доступной частью пакета. Так что нужно использовать функцию stream_get_contents (аналогичную file_get_contents) или цикл while, чтобы считывать содержимое меньшими фрагментами до тех пор, пока не будет достигнут конец файла:
<?php
$handle = fopen("http://brugbart.com/", "rb");
$contents = stream_get_contents($handle);
fclose($handle);
?>
<?php
$handle = fopen("http://brugbart.com/", "rb");
$contents = '';
while (!feof($handle)) {
$contents .= fread($handle, 8192);
}
fclose($handle);
echo $contents;
?>
В данном случае обработки POST запроса PHP последний аргумент функции fread равен размеру фрагмента. Он, как правило, не должен быть больше, чем 8192 (8*1024).
Имейте в виду, что он может быть больше или меньше, а также может быть ограничен настройками системы, на которой запускается PHP.
Использование file_get_contents для получения URL-адреса сайта
Еще проще использовать этот метод при считывании файла по HTTP, так как вам не придется заботиться о считывании по фрагментам - все обрабатывается в PHP.
<?php
$homepage = file_get_contents('http://brugbart.com/');
echo $homepage;
?>