我试图设置一些R代码以在Azure Devops中创建一个新的工作项任务。如果可以,我可以从一个几乎为空的工作项开始(我的示例代码仅尝试创建一个带有标题的工作项)。
我收到203答复,但工作项未出现在Devops中。
我一直在遵循Microsoft的本文档,我怀疑我可能没有正确格式化主体。
我尝试更新不同的字段并以不同的方式格式化正文,但没有成功。我试图创建错误或功能工作项,但都返回相同的203响应。
要验证我的令牌是否正常工作,我可以通过ID获取工作项数据,但POST继续返回203。
require(httr)
require(jsonlite)
url <- 'https://dev.azure.com/{organization}/{project}/_apis/wit/workitems/$bug?api-version=5.1'
headers = c(
'Authorization' = sprintf('basic %s',token),
'Content-Type' = 'application/json-patch+json',
'Host' = 'dev.azure.com'
)
data <- toJSON(list('body'= list("op"= "add",
"path"= "/fields/System.AreaPath",
"value"= "Sample task")), auto_unbox = TRUE, pretty = TRUE)
res <- httr::POST(url,
httr::add_headers(.headers=headers),
httr::verbose(),
body = data)
当我导航到网站时,我期望200响应(类似于上面的链接中的示例)和Azure DevOps Services中的工作项任务。
R不是最好的,所以请详细说明。谢谢你!
答案 0 :(得分:0)
POST继续返回203。
HTTP响应代码203
的意思是Non-Authoritative Information
,应由您的令牌格式转换错误引起。
如果您希望通过HTTP提供个人访问令牌 标头,您必须先将其转换为Base64字符串。
请参阅此处介绍的doc,如果您想使用VSTS rest api,则必须将令牌转换为Base64
字符串。但是在您的脚本中,您没有此脚本来实现此转换。
因此,请尝试使用以下脚本将令牌转换为符合要求的密钥(首先加载 base64enc软件包):
require(base64enc)
key <- token
keys <- charToRaw(paste0(key,":token"))
auth <- paste0("Basic ",base64encode(keys))
希望这可以帮助您获得200个响应代码