Добавление комментария для устранения проблемы через REST API приводит к ошибке кодирования содержимого - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь добавить комментарий к проблеме внутри Fortify.Когда я отправляю сообщение, которое я считаю правильным JSON, я получаю ответ "{" message ":" Содержимое было неправильно отформатировано (ожидаемое приложение / json; charset = utf-8). "," ResponseCode ": 400," errorCode ": -20209} "

Однако, если я использую Fiddler для проверки сообщения, которое я отправляю, и получения соответствующих заголовков, похоже, на месте.Какая вторичная проблема может вызывать появление этого исключения?

Fortify v18.10.0187.NET v4.6.2Newtonsoft.Json v9.0.0

 public static string PostCommentIssue(FortifyComment fc)
 {
      var content = JsonConvert.SerializeObject(fc);
      var postUri = String.Format(Configuration.FortifyCommentsUri, fc.data.issueId);
      return WebServiceHelper.PostMessage(postUri, content);
 }

 public static string PostMessage(string url, string content)
 {
      HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Post, url);
      requestMessage.Headers.Add("Authorization", Configuration.FortifyAuthorization.ToHeader());
      requestMessage.Content = new StringContent(content, Encoding.UTF8, JsonMediaTypeFormatter.DefaultMediaType.MediaType);

      HttpResponseMessage hrm = HttpClient.SendAsync(requestMessage).Result;
      hrm.EnsureSuccessStatusCode();
      HttpContent hc = hrm.Content;

      return hc.ReadAsStringAsync().Result;
 }

FortifyComment - это просто объект с основными элементами комментария.Он основан на ответе Fortify, полученном на запрос (таким образом, внутренний элемент данных).

Использование

 FortifyComment fc = new FortifyComment();
 fc.data.issueId = defect.id;
 fc.data.comment = String.Format("TFS #{0}.", tfsNumber);
 FortifyHelper.PostCommentIssue(fc);

Я получаю ошибку 400.Скриншот перехвата Fiddler: Fiddler capture 1Fiddler capture 2 (request body)

...