Я играл с jira rest api, чтобы в конечном итоге заменить реализацию мыла в приложении С# с использованием 4.0 .net framework. Я также использую RestSharp.
Хотя у меня не было проблем с получением проблемы или поиском проблемы с остальными API, я дергал себя за волосы с обновлением проблемы jira. Это мои методы выполнения, они отлично работают для получения или поиска задач jira. Обычное сообщение об ошибке, которое я получаю, когда я вызываю SetJiraIssue, выглядит следующим образом {"errorMessages":["одно из "полей" или "обновление" требуется"],"ошибки":{}}.
Если я передам простой пример строки JSOn (string jSonContent = @"{""Fields"":{""summary"":"" обновление сводки тестирования""}}") в тело запроса, то он жалуется, что для него нет конструктора.
Кто-нибудь там как идея, что я делаю неправильно? Комментарии и предложения приветствуются
private string Execute(RestRequest request)
{
var client = new RestClient(_jiraUrl);
client.Authenticator = new HttpBasicAuthenticator(_accountId, _password);
request.AddParameter("AccountSid", _accountId, ParameterType.UrlSegment);
var response = client.Execute(request);
if (response.ErrorException != null)
{
const string message = "Error retrieving response. Check inner details for more info.";
var jiraManagerException = new ApplicationException(message, response.ErrorException);
throw jiraManagerException;
}
return response.Content;
}
/// <summary>
/// Executes a jira rest call and retuns the response if any as a business object.
/// </summary>
/// <typeparam name="T">Type of the return type for deserialization.</typeparam>
/// <param name="request">THe reste request.</param>
/// <returns></returns>
private T Execute<T>(RestRequest request) where T : new()
{
var client = new RestClient(_jiraUrl);
client.Authenticator = new HttpBasicAuthenticator(_accountId, _password);
request.AddParameter("AccountSid", _accountId, ParameterType.UrlSegment);
var response = client.Execute<T>(request);
if (response.ErrorException != null)
{
const string message = "Error retrieving response. Check inner details for more info.";
var jiraManagerException = new ApplicationException(message, response.ErrorException);
throw jiraManagerException;
}
return response.Data;
}
public void SetJiraIssue(string issueKey, JiraIssue j)
{
RestRequest request = new RestRequest("issue/{key}", Method.PUT);
request.AddUrlSegment("key", issueKey);
request.RequestFormat = DataFormat.Json;
request.AddHeader("Content-type", "application/json");
j.Summary = "modifiying this issue";
request.AddBody(j);
var response = Execute(request);
Console.WriteLine(response);
}