4

如果我有一个如下所示的 URL:

$url = 'http://domain.com/?foo=bar';

然后执行 curl 如下:

$resource = curl_init();
curl_setopt($resource, CURLOPT_URL, $url);
curl_setopt($resource, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($resource);
curl_close($resource);

我了解我通过 GET(默认)提出此请求。

现在,如果我在同一场景中设置以下选项:

curl_setopt($resource, CURLOPT_POST, 1);

我知道它使用 POST 而不是 GET,但它是否使用 POSTfoo的值bar?或者正确的方法是:

$url = 'http://domain.com/';
$post = 'foo=bar';
$resource = curl_init();
curl_setopt($resource, CURLOPT_URL, $url);
curl_setopt($resource, CURLOPT_POST, 1);
curl_setopt($resource, CURLOPT_POSTFIELDS, $post);
curl_setopt($resource, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($resource);
curl_close($resource);

如果我这样做会发生什么(即在 URL 中并通过 CURLOPT_POSTFIELDS 提交值):

$url = 'http://domain.com/?foo=bar';
$post = 'foo=bar';
$resource = curl_init();
curl_setopt($resource, CURLOPT_URL, $url);
curl_setopt($resource, CURLOPT_POST, 1);
curl_setopt($resource, CURLOPT_POSTFIELDS, $post);
curl_setopt($resource, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($resource);
curl_close($resource);

在那种情况下如何提交数据?

4

1 回答 1

4

POST 和 GET 之间的区别在于服务器检索数据的方式。当您将 CURLOPT_POST 设置为 true 时,服务器通常会通过 CURLOPT_POSTFIELDS 值(即 HTTP 正文中的参数)接收参数,并且可能会忽略 URL 字符串中发送的参数 - 但这实际上取决于各个服务器。

于 2012-06-06T14:29:40.170 回答