如何在PHP中启动GET / POST / PUT / DELETE请求并判断请求类型?

时间:2010-01-28 10:06:18

标签: php request

我从未看到PUT/DELETE请求是如何发送的。

如何在PHP中完成?

我知道如何使用curl发送GET / POST请求:

$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请求?

2 个答案:

答案 0 :(得分:47)

DELETE使用curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
对于PUT使用curl_setopt($ch, CURLOPT_PUT, true);

不依赖于安装cURL的替代方法是将file_get_contentscustom HTTP stream context一起使用。

$result = file_get_contents(
    'http://example.com/submit.php', 
    false, 
    stream_context_create(array(
        'http' => array(
            'method' => 'DELETE' 
        )
    ))
);

查看这两篇关于使用PHP进行REST的文章

答案 1 :(得分:3)

一般来说,如果您想发送一些“非GET”请求,您通常会使用curl


并且您将使用curl_setopt函数来配置您要发送的请求;在大量可能的选项中,要更改请求方法,您至少会对这些选项感兴趣(引用)

  • CURLOPT_CUSTOMREQUEST:在执行HTTP请求时使用的自定义请求方法,而不是“GET”或“HEAD”。这对于执行“DELETE”或其他更加模糊的HTTP请求非常有用。
  • CURLOPT_HTTPGETTRUE将HTTP请求方法重置为GET
  • CURLOPT_POSTTRUE执行常规HTTP POST
  • CURLOPT_PUTTRUE到HTTP PUT一个文件。必须使用PUTCURLOPT_INFILE设置CURLOPT_INFILESIZE的文件。


当然,curl_setopt不是你将使用的唯一功能;有关如何使用curl发送请求的示例,请参阅curl_exec的文档页面。

(是的,这个例子很简单,发送GET请求 - 但你应该可以从那里构建;-))