【问题标题】:Azure DevOps problem to create project via REST call containing german umlautsAzure DevOps 问题通过包含德语变音符号的 REST 调用创建项目
【发布时间】:2020-08-12 11:21:42
【问题描述】:

我有一个通过调用 REST API 创建 Azure DevOps 项目的管理脚本。只要名称或描述参数不包含特殊字符,它就可以正常工作。例如,如果描述中有德语变音符号,则调用失败。

这行得通:

 curl -k -D- -X POST -d '{"name":"Phantom","capabilities":{"processTemplate":{"templateTypeId":"6b724908-ef14-45cf-84f8-768b5384da45"},"versioncontrol":{"sourceControlType":"Git"}},"visibility":"private","description":"Innocent description without umlauts"}' -H 'Accept: application/json' -H 'Content-Type: application/json' -H 'Authorization: Basic secretauthorizationtoken=' https://dev.azure.com/AdminPlayground/_apis/projects?api-version=6.0-preview.4

这个抛出异常:

curl -k -D- -X POST -d '{"name":"Phantom","capabilities":{"processTemplate":{"templateTypeId":"6b724908-ef14-45cf-84f8-768b5384da45"},"versioncontrol":{"sourceControlType":"Git"}},"visibility":"private","description":"Funny description with strange äöüß chars"}' -H 'Accept: application/json' -H 'Content-Type: application/json' -H 'Authorization: Basic secretauthorizationtoken=' https://dev.azure.com/AdminPlayground/_apis/projects?api-version=6.0-preview.4

例外是:

{"$id":"1","innerException":null,"message":"Value cannot be null.\r\nParameter name: projectToCreate","typeName":"System.ArgumentNullException, mscorlib","typeKey":"ArgumentNullException","errorCode":0,"eventId":0}

有没有人遇到过类似的行为,或许可以提出解决方案? 谢谢!

【问题讨论】:

  • 尝试将charset=utf-8 添加到Content-Type,例如'Content-Type: application/json;charset=utf-8'
  • 我在 Content-Type Header 中尝试了带有 charset=utf-8 的命令 - 结果相同。

标签: rest azure-devops


【解决方案1】:

这个问题是由于描述中的特殊字符导致的数据格式问题。

请检查是否可以通过在-ContentType中添加正确的编码格式来解决,

例如-ContentType 'application/json;charset=utf -8'

【讨论】:

  • 我在 Content-Type Header 中尝试了 charset=utf-8 的命令 - 结果相同。
  • @Sam 您也可以尝试使用邮递员调用相同的 Rest API 来创建项目。可以使用Funny description with strange äöüß chars 使用门户网站和邮递员来调用我身边的Rest API。如果它也有效,这可能与 API 本身无关。将有助于缩小问题范围。
  • 嗨,Sam,有什么更新吗?只是检查提供的信息是否有帮助。如果我的回复有帮助或给出了正确的方向。感谢marking it as an answer,这也将帮助社区中的其他人。
  • 对不起,帕特里克,我不知何故错过了你的回复。我不知道“邮递员”——有没有在这个实验中使用它的快速入门?
  • 嗨 Sam,它只是一个工具,你可以在工具中使用相同的 Rest API 来调用它。如果将返回 API 响应。然后您可以在 Azure DevOps 端检查更新。对于教程,您可以参考以下链接中的 Testing Azure DevOps APIs Using Postmanapievangelist.com/2020/01/22/…
猜你喜欢
  • 2020-12-04
  • 1970-01-01
  • 1970-01-01
  • 2012-11-16
  • 2021-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-16
相关资源
最近更新 更多