Обновление проблемы с jira с остальными api. НЕ мыло

моя php-функция для обновления jira-проблемы похожа на this.i жестко запрограммировала проблему id.it генерирует ошибку в if (property_exists($result, 'errors')) . говорящий параметр не является объектом.

 function post_to($resource, $data) { $jdata = json_encode($data); $ch = curl_init(); curl_setopt_array($ch, array( CURLOPT_POST => 1, CURLOPT_URL => JIRA_URL . '/rest/api/latest/' . $resource, CURLOPT_USERPWD => USERNAME . ':' . PASSWORD, CURLOPT_POSTFIELDS => $jdata, CURLOPT_HTTPHEADER => array('Content-type: application/json'), CURLOPT_RETURNTRANSFER => true )); $result = curl_exec($ch); curl_close($ch); return json_decode($result); } function create_issue($issue) { return post_to('issue/10224/editmeta', $issue); } $new_issue = array( 'update' =>array( 'fields' => array( 'project' => array('key' => 'DOTNET'), 'summary' => 'Test via REST', 'description' => 'Description of issue goes here.', 'issuetype' => array('name' => 'Task') )) ); $result = create_issue($new_issue); if (property_exists($result, 'errors')) { echo "Error(s) creating issue:\n"; var_dump($result); } } 

что я делаю неправильно здесь? ответьте, пожалуйста.

Не совсем уверен, давайте попробуем кое-что:

изменение

 CURLOPT_HTTPHEADER => array('Content-type: application/json'), 

чтобы:

 CURLOPT_HTTPHEADER => array( 'Accept: application/json', 'Content-Type: application/json' ); 

а также:

 $new_issue = array( 'update' =>array( 'fields' => array( 'project' => array('key' => 'DOTNET'), 'summary' => 'Test via REST', 'description' => 'Description of issue goes here.', 'issuetype' => array('name' => 'Task') )) ); 

чтобы:

 $new_issue = array( 'fields' => array( 'project' => array('key' => 'DOTNET'), 'summary' => 'Test via REST', 'description' => 'Description of issue goes here.', 'issuetype' => array('name' => 'Task') ) ); 

наконец, измените:

 CURLOPT_URL => JIRA_URL . '/rest/api/latest/' . $resource, 

на ваш реальный адрес, а также написание 2 вместо latest , то есть:

 CURLOPT_URL=>'http://localhost/rest/api/2/issue/', 

попробуйте это, и дайте мне знать, как все идет, удачи!

РЕДАКТИРОВАТЬ

попробуйте изменить:

 CURLOPT_POST => 1, 

чтобы:

 CURL_POST=>true, CURLOPT_VERBOSE=>1, 

Кстати, где ваш сервер jira? Разве вы не сказали, что это было организовано? localhost:8080 будет работать только в том случае, если Jira установлен локально. Если это так, попробуйте открыть его с помощью браузера http://localhost:8084/rest/api/2/issue/

EDIT 2

Убедитесь, что Allow Remote API Calls включены в разделе «Администрирование»> «Общая настройка».

для обновления проблемы:

URL должен указывать на проблему, которая будет вскоре обновляться, а именно:

 http://localhost/rest/api/2/issue/TEST-31 

и данные должны быть такими же, как и раньше, что означает:

 $new_issue = array( 'fields' => array( 'project' => array('key' => 'DOTNET'), 'summary' => 'Test via REST', 'description' => 'Description of issue goes here.', 'issuetype' => array('name' => 'Task') ) ); 

как вы писали, когда пытались создать проблему. вы можете найти здесь простой пример того, как это сделать.

ИЗМЕНИТЬ 3

Уверены ли вы, что у вас есть правильный адрес джиры? попробуйте снова открыть браузер и перейти к URL-адресу и сравнить его с этим примером . Если страница не будет отображаться, вам нужно будет связаться с администрацией Jira и спросить их, почему вы не можете получить доступ к удаленному API-интерфейсу Jira.

editmeta следует использовать только для получения метаданных OBTAIN из проблемы.

Чтобы обновить проблему, вы должны использовать метод выпуска .

Вы можете проверить информацию о Jira API здесь: https://docs.atlassian.com/jira/REST/cloud/#api/2/