@Freddie26

Как правильно сформировать Post запрос серверу Redmine?

Добрый день. Пытаюсь разобраться как добавлять задачи на Redmine, но постоянно выдает ошибку 422. Судя по мануалам Redmine это означает, что не правильный формат сообщения. Но так же в этих мануалах сказано, что должен быть текст ошибки на значение, которое не нравится серверу, а его нет. Делал собственно все по примеру (пример: www.redmine.org/projects/redmine/wiki/Rest_api_wit... ), а потом начал экспериментировать. Примеров по работе с компонентом HttpCli я больше не нашел в сети. Версия Redmine - 2.6.0.stable. Использую Delphi XE. Если у кого-то есть опыт - поделитесь пожалуйста. Ссылки на ресурсы тоже приветствуются. P.S. Пример на получение задачи работает.
  • Вопрос задан
  • 4079 просмотров
Пригласить эксперта
Ответы на вопрос 1
FuriousAngel
@FuriousAngel
Интересно, еще актуально?
422 может выскакивать в том числе если в передаваемых данных есть "запретное" для пользователя действие или неправильные данные - например попытка выставить дату выполнения меньше чем дата начала.
www.sql.ru/forum/1129863/redmine-rest-api?mid=1694...
вот в этом сообщение второй пример мне сильно помог (у меня тоже Delphi XE 4)

Рабочий пример (с доп полями)
address:='https://АДРЕС/projects/НАЗВАНИЕ ПРОЕКТА/issues.xml?key=';
                      apiAccessKey := edit1.text; ///Api user key example
                           for I := 0 to memo1.Lines.Count-1 do
                              begin
                                  date_due:=copy(memo5.Lines[i],7,4)+'-'+copy(memo5.Lines[i],4,2)+'-'+copy(memo5.Lines[i],1,2);
                                  date_close:=copy(memo6.Lines[i],7,4)+'-'+copy(memo6.Lines[i],4,2)+'-'+copy(memo6.Lines[i],1,2);
                                  date_check:=copy(memo7.Lines[i],7,4)+'-'+copy(memo7.Lines[i],4,2)+'-'+copy(memo7.Lines[i],1,2);
                                      try
                                         issue := TStringList.Create;
                                                with issue do
                                                    begin

                                                      Add('issue[tracker_id=44');
                                                      Add('issue[subject='+memo1.Lines[i]);
                                                      Add('issue[description='+memo2.Lines[i]);
                                                      Add('issue[status_id=1');
                                                      Add('issue[priority_id=2');
                                                      Add('issue[assigned_to_id='+memo3.Lines[i]);
                                                      Add('issue[start_date='+formatdatetime('YYYY-MM-dd',now()));
                                                      Add('issue[due_date='+date_due);
                                                      Add('issue[fixed_version_id='+memo8.Lines[i]);
                                                      Add('issue[custom_field_values[166='+memo4.Lines[i]);
                                                      Add('issue[custom_field_values[76='+memo3.Lines[i]);
                                                      Add('issue[custom_field_values[106='+date_close);
                                                      Add('issue[custom_field_values[66='+date_check);
                                                    end;
                                                   try
                                          idhttp1.Post(address+apiAccessKey,issue);
                                                    except
                                                    issue.Destroy;
                                                      raise;
                                          end;
                                          finally
                                          issue.Destroy;
                                          end;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы