Используя PHP и JIRA REST API, я могу добавить наблюдателей к существующим проблемам через этот код:
$username = 'xxxx';
$password = 'xxxx';
$proxy = 'http://xxxx:8080/';
$url = "http://xxxx/rest/api/2/issue/xxxx/watchers";
$data = 'name1';
$ch = curl_init();
$headers = array(
'Accept: application/json',
'Content-Type: application/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_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
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);
Тем не менее, этот метод позволяет мне добавить только один наблюдатель. Есть ли способ добавить несколько наблюдателей к существующей проблеме? Я попытался сделать это так:
$data = array(
'name1',
'name2',
);
Но это приводит к ошибке запроса.
Таким образом, единственный способ обойти это — просто сделать несколько вызовов API, чтобы добавить наблюдателей. По какой-то причине API не будет принимать правильно отформатированные вызовы JSON с несколькими именами. Если только одно имя, вывод JSON просто "name1"
, но для нескольких имен в массиве становится ["name1","name2","name3"]
(квадратные скобки — это то, что сбрасывает его с толку).
Если кто-нибудь знает лучший способ, пожалуйста, дайте мне знать, но это то, что я в итоге сделал (хотя я действительно считаю, что это обходной путь, а не ответ):
$username = 'xxxx';
$password = 'xxxx';
$proxy = 'http://xxxx:8080/';
$url = "http://xxxx/rest/api/2/issue/xxxx/watchers";
$data = array(
'name1',
'name2',
'name3'
);
$headers = array(
'Accept: application/json',
'Content-Type: application/json'
);
$ch = curl_init();
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_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
foreach ($data as $key => $user)
{
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($user));
$result = curl_exec($ch);
}
curl_close($ch);
Других решений пока нет …