Ошибка при попытке опубликовать обсуждение комментария к рабочему элементу с помощью REST API Azure DevOps
Я пытаюсь опубликовать комментарий обсуждения для рабочего элемента, используя REST API version = 5.1-preview.3.
Резюме
Тип: POST и C# HttpClient
Однако независимо от того, как я пытаюсь работать с ним, я всегда получаю ответ:
StatusCode: 415, ReasonPhrase: 'Unsupported Media Type'
Внутренний ответ примерно такой:
{"$id":"1","innerException":null,"message":"TF400898: An Internal Error Occurred. Activity Id: d634683c-0b2e-4bfb-9a66-ee99f32404c6.","typeName":"System.Web.Http.HttpResponseException, System.Web.Http","typeKey":"HttpResponseException..
Я отправляю данные / комментарий в следующем формате JSON:
[
{
"text": "Test Comment"
}
]
Как упомянуто в документах:
https://docs.microsoft.com/en-us/rest/api/azure/devops/wit/comments/add?view=azure-devops-rest-5.1
Запрос
Я пытаюсь поразить API:
используя приведенный ниже пример кода:
public class Comment
{
[JsonProperty("text")]
public string Text { get; set; }
}
var comment = new Comment()
{
Text = "Test Comment"
};
var comments = new List<Comment>();
comments.Add(comment);
var body = JsonConvert.SerializeObject(comments);
var postValue = new StringContent(body, Encoding.UTF8, "application/json-patch+json");
using (HttpClient httpClient = new HttpClient())
{
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", "", _token))));
using (HttpRequestMessage httpRequestMessage = new HttpRequestMessage(new HttpMethod("POST"), _apiUrl) { Content = postValue })
{
var httpResponseMessage = httpClient.SendAsync(httpRequestMessage).Result;
}
}
Я считаю, что приведенный выше фрагмент должен иметь возможность добавить комментарий к рабочему элементу. Однако независимо от того, как я пытаюсь работать с ним, я всегда получаю ответ:
отклик
StatusCode: 415, ReasonPhrase: 'Unsupported Media Type'
Внутренний ответ примерно такой:
{"$id":"1","innerException":null,"message":"TF400898: An Internal Error Occurred. Activity Id: d634683c-0b2e-4bfb-9a66-ee99f32404c6.","typeName":"System.Web.Http.HttpResponseException, System.Web.Http","typeKey":"HttpResponseException..
Не могли бы вы помочь мне здесь?
Заранее спасибо!
2 ответа
Спасибо за ответ.
Изменения, предложенные @Michael вместе со следующим изменением, сделали свое дело.
var postValue = new StringContent(body, Encoding.UTF8, "application/json");
Обновлен тип контента "application/json-patch+json" до "application/json".
Вот аналогичная ветка, в которой обсуждается этот вопрос в сообществе разработчиков.
Я согласен с комментарием Майкла выше, и это работает без вложения []
, что не соответствует примеру, приведенному в официальной документации REST API.
Я бы порекомендовал вам открыть вопрос здесь и исправить это в документации. Вы также можете открыть вопрос здесь, чтобы получить немедленную помощь от команды разработчиков Azure.
Спасибо, что сообщили нам об этом!