我有一个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);
答案 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处理。