未在cURL请求的另一端接收POST数据

时间:2011-11-09 08:04:07

标签: php rest post curl put

我有一个curl请求,如下所示,它应该向我的网络服务器上的PHP文件发送PUT请求。当我收到此请求时,我想列出使用此PUT请求收到的所有POST数据,但没有收到POST数据。请你告诉我我哪里出错了?

$ch = curl_init();
$fields = array(
        'username' => 'username'
);
curl_setopt($ch, CURLOPT_URL, "http://localhost/linetime/user/1");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$result = curl_exec($ch);
var_dump($result);

1 个答案:

答案 0 :(得分:5)

通过PUT无法使用$_POST次请求发送的数据。

看一下$_SERVER['CONTENT_TYPE']告诉你的内容。 multipart/form-data通常带有MIME邮件中的边界。您可以使用输入流读取PUT数据:

$putData = '';
$fp = fopen('php://input', 'r');
while (!feof($fp)) {
    $s = fread($fp, 64);
    $putData .= $s;
}
fclose($fp);

在您的情况下,$putData现在应包含以下内容:

------------------------------e85bfe7e43b5
Content-Disposition: form-data; name="username"

username
------------------------------e85bfe7e43b5--

现在,您只需要使用许多免费的PEAR包之一来解析这些数据,以便进行MIME处理。