我正在尝试使用 REST API 和 PHP/cURL 更新一些自定义字段。
我想知道我是否可能在没有意识到的情况下编辑了某些内容,而我昨天在下面“工作”的内容(我认为)现在不起作用。
我使用不同的“方法”得到不同的响应,来自:
我使用 POST 方法得到这个,因为它在下面没有注释。
HTTP 405 - 请求的资源 () 不允许指定的 HTTP 方法。
如果我使用注释掉的 PUT 方法,而 POST 被注释掉,我会得到这个。
{"status-code":500,"message":"Read timed out"}
而这个混合和匹配 PUT 和 POST。
{"errorMessages":["No content to map to Object due to end of input"]}
我错过了什么/做错了什么?我正在使用以下代码:
<?php
$username = 'username';
$password = 'password';
$url = "https://example.com/rest/api/2/issue/PROJ-827";
$ch = curl_init();
$headers = array(
'Accept: application/json',
'Content-Type: application/json'
);
$test = "This is the content of the custom field.";
$data = <<<JSON
{
"fields": {
"customfield_11334" : ["$test"]
}
}
JSON;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
// Also tried, with the above two lines commented out...
// curl_setopt($ch, CURLOPT_PUT, 1);
// curl_setopt($ch, CURLOPT_INFILE, $data);
// curl_setopt($ch, CURLOPT_INFILESIZE, strlen($data));
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
$result = curl_exec($ch);
$ch_error = curl_error($ch);
if ($ch_error) {
echo "cURL Error: $ch_error";
} else {
echo $result;
}
curl_close($ch);
?>