首页 > 解决方案 > 通过 REST API 向 Fortify 问题添加评论会导致内容编码错误

问题描述

我正在尝试对 Fortify 中的问题添加评论。当我发布我认为正确的 JSON 时,我收到响应“{“message”:“内容格式不正确(预期的应用程序/json;charset=utf-8)。”,“responseCode”:400,“errorCode” :-20209}"

但是,如果我使用 Fiddler 检查我正在发布的消息并接收到适当的标头,则似乎就位。什么次要问题可能导致引发此异常?

强化 v18.10.0187
.NET v4.6.2
Newtonsoft.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拦截截图: 提琴手捕获 1Fiddler 捕获 2(请求正文)

标签: c#.netrestfortify

解决方案


推荐阅读