Как запустить запрос GET/POST/PUT/DELETE и тип запроса суждения в PHP?
Я никогда не вижу, как отправлен запрос PUT/DELETE
.
Как это сделать в PHP?
Я знаю, как отправить запрос GET/POST с помощью curl:
$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile);
curl_setopt($ch, CURLOPT_COOKIEFILE,$cookieFile);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 4);
Но как сделать запрос PUT
/DELETE
?
Ответы
Ответ 1
Для DELETE
используйте curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
Для PUT
используйте curl_setopt($ch, CURLOPT_PUT, true);
Альтернативой, которая не полагается на установленную cURL, было бы использовать file_get_contents
с настраиваемый контекст HTTP-потока.
$result = file_get_contents(
'http://example.com/submit.php',
false,
stream_context_create(array(
'http' => array(
'method' => 'DELETE'
)
))
);
Ознакомьтесь с этими двумя статьями о выполнении REST с PHP
Ответ 2
Вообще говоря, если вы хотите отправить запрос "не-GET", вы часто будете работать с curl.
И вы будете использовать функцию curl_setopt
для настройки отправляемого запроса; среди большого количества возможных вариантов, чтобы изменить метод запроса, вас будут интересовать по крайней мере эти параметры (цитирование):
-
CURLOPT_CUSTOMREQUEST
: использовать метод пользовательских запросов вместо "GET
" или "HEAD
" при выполнении HTTP-запроса. Это полезно для выполнения "DELETE
" или других, более неясных HTTP-запросов.
-
CURLOPT_HTTPGET
: TRUE
до reset метод HTTP-запроса до GET
.
-
CURLOPT_POST
: TRUE
выполнить обычный HTTP POST
.
-
CURLOPT_PUT
: TRUE
в HTTP PUT
файл. Файл PUT
должен быть установлен с помощью CURLOPT_INFILE
и CURLOPT_INFILESIZE
.
Конечно, curl_setopt
- не единственная функция, которую вы будете использовать; см. страницу документации curl_exec
для примера того, как отправить запрос с помощью curl.
(Да, этот пример довольно прост и отправляет запрос GET
- но вы должны иметь возможность строить там;-))