Powershell 中的 Jira Rest Api

如何解决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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?