You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PowerShell调用Redmine REST API创建工单时出现422错误求助

解决PowerShell调用Redmine REST API创建工单时的422错误

问题原因

你脚本里的请求Body使用了"转义字符,并且用单引号包裹字符串。PowerShell中单引号字符串不会解析转义字符,导致发送给Redmine的JSON内容里实际包含"而非正常的双引号,Redmine无法识别这种格式错误的JSON,因此返回422 Unprocessable Entity错误。而Postman会自动处理转义逻辑,所以请求可以正常执行。

解决方案

方法1:使用PowerShell对象转换为JSON(推荐)

先构造PowerShell哈希表对象,再通过ConvertTo-Json命令生成标准JSON字符串,彻底避免手动编写JSON的转义错误:

$Headers = @{ 'X-Redmine-API-key' = '********' }
$Uri = "https://task.test.com/issues.json"

# 构造工单数据对象
$issueData = @{
    issue = @{
        project_id = 316
        subject = "testProject"
        priority_id = 4
        description = "testTask"
        assigned_to_id = 1891
        custom_fields = @(
            @{
                value = "******"
                name = "physicalName"
                id = 5
            },
            @{
                value = "****"
                name = "***"
                id = 6
            },
            @{
                value = "****"
                name = "*****"
                id = 10
            },
            @{
                value = "****"
                name = "*****"
                id = 11
            },
            @{
                value = "0"
                name = "*******"
                id = 16
            }
        )
    }
}

# 转换为JSON字符串(-Depth参数确保嵌套结构被正确序列化)
$jsonBody = $issueData | ConvertTo-Json -Depth 3

# 发送请求
Invoke-RestMethod $Uri -Headers $Headers -Method POST -ContentType 'application/json' -Body $jsonBody

方法2:修正手动编写的JSON字符串

如果坚持手动编写JSON,需将"替换为实际双引号,并使用PowerShell的Here-String包裹内容(无需手动转义双引号):

$Headers = @{ 'X-Redmine-API-key' = '********' }
$Uri = "https://task.test.com/issues.json"
Invoke-RestMethod $Uri -Headers $Headers -Method POST -ContentType 'application/json' -Body @"
{
    "issue": {
        "project_id": 316,
        "subject": "testProject",
        "priority_id": 4,
        "description": "testTask",
        "assigned_to_id": 1891,
        "custom_fields": [{
                "value": "******",
                "name": "physicalName",
                "id": 5
            },
            {
                "value": "****",
                "name": "***",
                "id": 6
            },
            {
                "value": "****",
                "name": "*****",
                "id": 10
            },
            {
                "value": "****",
                "name": "*****",
                "id": 11
            },
            {
                "value": "0",
                "name": "*******",
                "id": 16
            }
        ]
    }
}
"@

内容的提问来源于stack exchange,提问作者Pomidor_83

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 11:15:37