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

使用Sectigo API添加域名时Invoke-WebRequest报-1002错误求助

解决Sectigo API "Cannot parse message body" 错误

问题原因

你手动拼接JSON字符串时的引号处理错误:

  • 原代码用单引号包裹JSON模板,PowerShell中单引号是字面量字符串,里面的"会被当作和"两个字符直接输出,生成的JSON包含`"这种非法格式,导致API无法解析。
  • 固定字符串用双引号包裹,里面的`"会被PowerShell正确解析为",所以JSON格式合法。

另外手动拼接JSON还存在潜在风险:如果输入的域名包含特殊字符(如"、\),会直接破坏JSON结构。

推荐解决方案:使用ConvertTo-Json生成合法JSON

PowerShell自带的ConvertTo-Json能自动处理引号转义和嵌套结构,是最可靠的方式:

$domain = Read-Host "Provide Domain name"
# 先构建PowerShell对象
$domainPayload = [PSCustomObject]@{
    name = $domain
    description = "Domain created via REST API"
    active = $true
    delegations = @(
        [PSCustomObject]@{
            orgId = 000000  # 这里直接写数字,不要加引号
            certTypes = @("SSL")
        }
    )
}

# 转换为JSON,指定Depth确保嵌套结构被正确序列化
$crt_domain = $domainPayload | ConvertTo-Json -Depth 3

$create_domain = Invoke-WebRequest -Uri "https://cert-manager.com/api/domain/v1" `
    -Method Post `
    -Headers $headers `
    -ContentType "application/json;charset=utf-8" `
    -Body $crt_domain

可选方案:修正手动拼接的引号写法

如果坚持手动拼接,需要用双引号包裹整个JSON模板,确保变量和转义引号被正确解析:

$domain = Read-Host "Provide Domain name"
$crt_domain = "{`"name`":`"$domain`",`"description`":`"Domain created via REST API`",`"active`:true,`"delegations`":[{`"orgId`":000000,`"certTypes`":[`"SSL`"]}]}"

$create_domain = Invoke-WebRequest -Uri "https://cert-manager.com/api/domain/v1" `
    -Method Post `
    -Headers $headers `
    -ContentType "application/json;charset=utf-8" `
    -Body $crt_domain

注意:这种方式无法自动处理域名中的特殊字符,仅推荐用于简单场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 20:25:13