使用 Nextcloud / owncloud API 的 cURL PUT 请求
cURL PUT Request with Nextcloud / owncloud API
我试图通过 API 更新现有的 Nextcloud 用户。当我直接通过 shell 执行时,它有效
curl -u user:pass -X PUT "https://example.org/ocs/v1.php/cloud/users/admin" -H "OCS-APIRequest: true" -d key="quota" -d value="5GB"
但是当我尝试使用以下代码通过 PHP 执行此操作时,它总是 returns "failure 997"
$url = 'https://' . $ownAdminname . ':' . $ownAdminpassword . '@example.org/ocs/v1.php/cloud/users/admin';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$fields = array("quota" => "5GB");
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($fields));
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'OCS-APIRequest: true'
));
$response = curl_exec($ch);
curl_close($ch);
echo "Response: ".$response;
cURL 命令与您粘贴的 PHP 代码之间的区别在于一个 poorly designed user provisioning API。
使用这些 cURL 参数:
-d key="quota" -d value="5GB"
... 不等同于您发布的字段:
$fields = array("quota" => "5GB");
...而是:
$fields = array(
'key' => 'quota',
'value' => '5GB',
);
您获得的 997
代码的解释可以在 https://github.com/owncloud/core/blob/v10.0.3/apps/provisioning_api/lib/Users.php#L269-L272 中找到:因为没有“key
” key在提交的数据中($parameters['_put']['key']
将评估为 null
),因此出现错误。
我试图通过 API 更新现有的 Nextcloud 用户。当我直接通过 shell 执行时,它有效
curl -u user:pass -X PUT "https://example.org/ocs/v1.php/cloud/users/admin" -H "OCS-APIRequest: true" -d key="quota" -d value="5GB"
但是当我尝试使用以下代码通过 PHP 执行此操作时,它总是 returns "failure 997"
$url = 'https://' . $ownAdminname . ':' . $ownAdminpassword . '@example.org/ocs/v1.php/cloud/users/admin';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$fields = array("quota" => "5GB");
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($fields));
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'OCS-APIRequest: true'
));
$response = curl_exec($ch);
curl_close($ch);
echo "Response: ".$response;
cURL 命令与您粘贴的 PHP 代码之间的区别在于一个 poorly designed user provisioning API。
使用这些 cURL 参数:
-d key="quota" -d value="5GB"
... 不等同于您发布的字段:
$fields = array("quota" => "5GB");
...而是:
$fields = array(
'key' => 'quota',
'value' => '5GB',
);
您获得的 997
代码的解释可以在 https://github.com/owncloud/core/blob/v10.0.3/apps/provisioning_api/lib/Users.php#L269-L272 中找到:因为没有“key
” key在提交的数据中($parameters['_put']['key']
将评估为 null
),因此出现错误。