【问题标题】:How do I stop the DevOps REST API from wrapping an incoming JSON payload in double quotes?如何阻止 DevOps REST API 将传入的 JSON 有效负载用双引号括起来?
【发布时间】:2021-03-31 11:11:17
【问题描述】:

我正在尝试使用 ADO REST API 将文件附加到工作项。问题似乎是传入的字符串在过程中的某个时刻被双引号括起来。这可以在任何附加的 .txt 文件(可以正常打开)中看到,并导致 .png 和 .jpg 文件无法打开。我尝试附加的内容是通过 Oracle Integration Cloud 中的连接器从 Outlook 中提取的附件“内容字节”,我在发送到 ADO 之前在 OIC 中进行了基于 64 位解码。

这是我在 ADO 中创建附件的调用(媒体类型为 application/json-patch+json):

https://dev.azure.com/{org}/{project}/_apis/wit/attachments?api-version=6.0

"[]"

这是我用来进行下一次调用的响应(媒体类型为 JSON):

{
  "id" : "",
  "url" : ""
}

这是将附件与特定工作项关联的下一个调用(媒体类型为 application/json-patch+json):

https://dev.azure.com/{org}/{project}/_apis/wit/workitems/{id}?api-version=6.0

{
  "op" : "add",
  "path" : "/relations/-",
  "value" : {
    "rel" : "AttachedFile",
    "url" : ""
  }
} 

是否有 html 标头或可以用来防止这种情况发生的东西?

谢谢!

【问题讨论】:

  • 你的txt文件显示的是二进制内容还是文件本身的内容?
  • 它显示一个 base 64 编码的字符串(例如,格式为“dGVzdCB0ZXN0IHRlc3Q=”,加上引号),除非我首先在 OIC 中对其进行解码。如果我对其进行解码,它通常会显示文件的文本内容,但添加的引号除外,并在最初存在换行符的地方添加 \r\n (例如,以 "test\r\ntest\r\ntest" 的形式)

标签: json rest azure-devops attachment azure-devops-rest-api


【解决方案1】:

太棒了,事实证明 Microsoft 的文档有些误导,并暗示 ADO 期望使用 JSON 有效负载来创建附件,而实际上它只期望二进制内容。一旦我发现我在 Outlook 的“contentBytes”上使用了 OIC 中的函数“decodeBase64ToReference”。然后我重新配置了我的 OIC 连接器以发送二进制有效负载并相应地映射所有内容。像魅力一样工作。

https://i.stack.imgur.com/92tPs.png

https://i.stack.imgur.com/WSKnt.png

【讨论】:

    猜你喜欢
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多