You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PHP和cURL在JFrog Artifactory中创建/更新键值对?

问题:PHP 8.2 操作JFrog Artifactory API 新增/更新制品属性

背景

我使用PHP 8.2读取JFrog Artifactory API的操作完全正常,现在需要实现属性不存在时创建,存在时更新的逻辑。

读取属性的可行代码

<?PHP

// 特定制品属性的完整API地址
$api = "https://mysrv/api/storage/TestProduct/TestComponent/1.0.0/?properties";

$ch = curl_init($api);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    "X-JFrog-Art-Api: ". $artifactoryKey,
));

// 发送请求获取现有属性
$response = curl_exec($ch);
echo "<pre>";
var_dump($response);

?>

读取结果示例

string(123) "{
    "properties" : {
        "ComponentName" : [ "TestComponent" ],
        "ContactEmail" : [ "me@nowhere.com" ],
        "ContactName" : [ "John Doe" ],
        "VersionNumber" : [ "1.0.0" ]
    },
    "uri" : "https://mysrv/api/storage/TestProduct/TestComponent/1.0.0"
}"

需求目标

在现有属性中新增键值对MyKey: False,预期结果如下:

string(123) "{
    "properties" : {
        "ComponentName" : [ "TestComponent" ],
        "ContactEmail" : [ "me@nowhere.com" ],
        "ContactName" : [ "John Doe" ],
        "VersionNumber" : [ "1.0.0" ],
        "MyKey" : [ "False" ]
    },
    "uri" : "https://mysrv/api/storage/TestProduct/TestComponent/1.0.0"
}"

尝试的代码及错误

我试过以下代码(及各种调整),但均执行失败:

// 定义新的键值对
$newProperty = array(
    'key' => "MyKey",
    'value' => "False"
);

// 准备JSON请求体
$payload = json_encode(array("properties" => array($newProperty)));

// 初始化cURL更新属性
$ch = curl_init($api);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'X-JFrog-Art-Api: ' . $artifactoryKey
));
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);

// 发送请求更新属性
$response = curl_exec($ch);
echo "<pre>";
var_dump($response);

返回错误信息

string(98) "{
    "errors" : [ {
        "status" : 400,
        "message" : "Properties value cannot be empty."
    } ]
}"

确认账户拥有足够的写入/修改权限,错误与权限无关,希望得到相关解决方案。


内容的提问来源于stack exchange,提问作者Beauvais

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 01:03:28