如何解决Powershell 中的 Jira Rest Api
你能帮我吗?
我正在尝试使用 Powershell Invoke-WebRequest cmdlet 在 Jira 中创建问题。我收到 400 Bad Request 错误。
我能够使用 Postman 成功发送请求,因此我确保正文语法正确并且我拥有足够的权限。
我的代码:
$body = @{
"fields" = @{
"project"=
@{
"key"= "ProjectKey"
}
"summary"= "Test"
"description"= "Test"
"issuetype" =@{
"id"= "10705"
}
"priority"= @{
"id"= "18"
}
"reporter"= @{"name"= "MyName"}
}
}
$Headers = @{
Authorization = "Basic QWxla0Zblablablablablablabla" #I took it from Postman
}
$restapiuri = "https://jira.domain.com/rest/api/2/issue"
Invoke-RestMethod -Uri $restapiuri -ContentType "application/json" -Body $body -Method POST -Headers $Headers
比如我可以成功执行
Invoke-RestMethod "https://jira.domain.com/rest/api/2/issue/createMeta" -Headers $Headers
我已经花了很多时间来解决这个问题,但仍然无法创建问题。
任何帮助,请???
解决方法
对于 Jira SERVER 的基本身份验证,需要在 Base64 编码的标头中提供凭据,您需要在通过 Powershell Invoke-WebRequest 方法提供它之前执行此操作。操作方法如下:
$username = "The username here"
$password = "The password or token here"
# Convert the username + password into a Base64 encoded hash for basic authentication
$pair = "${username}:${password}"
$bytes = [System.Text.Encoding]::ASCII.GetBytes($pair)
$base64 = [System.Convert]::ToBase64String($bytes)
$headers = @{ Authorization = "Basic $base64" }
接下来,在 PowerShell 中,如果您将请求的正文构建为表格,如您所示,不需要用引号将表格元素包裹起来,只需保持原样,但您在提交之前确实需要将表格转换为 JSON 格式,如下所示:
$body = @{
fields = @{
project = @{
key = "ProjectKey"
}
issuetype = @{
id = "10705" # Or refer to the Issue type by its name eg. name = "Story"
}
summary = "Test"
}
}
# Convert the body to JSON format
$body = $body | ConvertTo-Json -Depth 50
我假设您的 $Uri 字符串包含指向 Jira 服务器的实际 URL,而不是示例“jira.domain.com”
从正文中的一个简单请求开始,就像我展示的那样,它只包含创建问题所需的最低要求,这将在使请求变得更复杂之前检查您的基本代码是否正常工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。