PowerShell 生成的问题 JSON 和 CloudFlares API
Issues with PowerShell generated JSON and CloudFlares API
我正在尝试编写一些 PowerShell 来更新我的 Cloudflare 帐户上的 'A' 记录。代码如下所示:
##Configure headers
$Bearer = "Bearer " + $cloudflareAPIToken
$Headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$Headers.Add("Authorization",$Bearer)
##Configure Payload
$Body = @{
type = 'A'
Name = 'homepc'
Content = '8.8.8.8'
ttl = 1}
$Jsonbody = $Body | ConvertTo-Json -Compress
Invoke-RestMethod -Method PUT "https://api.cloudflare.com/client/v4/zones/$DNSZoneID/dns_records/$ARecordID" -Headers $Headers -Body -$Jsonbody -ContentType 'application/json'
我遇到了错误
Invoke-RestMethod: {"result":null,"success":false,"errors":[{"code":9207,"message":"Content-type must be application/json."}],"messages":[]}
我的 json 负载看起来像这样
PS C:\Users\Frank> $Jsonbody
{"type":"A","Name":"homepc","ttl":1,"Content":"8.8.8.8"}
如果我将此有效负载剪切并粘贴到 Postman 中,它就会起作用。 Bellow 是 Postman 生成的代码。这有效
curl --location --request PUT 'https://api.cloudflare.com/client/v4/zones/6b5e4cf4634bc20cebc1cd96072c/dns_records/4cb90f1dabfcc63a97055234520' \
--header 'Authorization: Bearer zHl3LhnQzRyw1_' \
--header 'Content-Type: application/json' \
--data-raw '{"type":"A","Name":"homepc","Content":"8.8.8.8","ttl":1}'
谁能帮我弄个水落石出?
提前致谢
弗兰克
我不使用 CloudFlare,但从错误消息看来您缺少 Content-Type
header。尝试添加这一行:
$Headers.Add('Content-Type', 'application/json')
编辑:不需要 header,因为它是使用 Invoke-RestMethod
的 -ContentType
参数指定的。仔细检查命令行,参数 -Body -$Jsonbody
在 JSON body 变量前面有一个错误的 -
,这使得发送的字符串 -{....}
。
我正在尝试编写一些 PowerShell 来更新我的 Cloudflare 帐户上的 'A' 记录。代码如下所示:
##Configure headers
$Bearer = "Bearer " + $cloudflareAPIToken
$Headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$Headers.Add("Authorization",$Bearer)
##Configure Payload
$Body = @{
type = 'A'
Name = 'homepc'
Content = '8.8.8.8'
ttl = 1}
$Jsonbody = $Body | ConvertTo-Json -Compress
Invoke-RestMethod -Method PUT "https://api.cloudflare.com/client/v4/zones/$DNSZoneID/dns_records/$ARecordID" -Headers $Headers -Body -$Jsonbody -ContentType 'application/json'
我遇到了错误
Invoke-RestMethod: {"result":null,"success":false,"errors":[{"code":9207,"message":"Content-type must be application/json."}],"messages":[]}
我的 json 负载看起来像这样
PS C:\Users\Frank> $Jsonbody
{"type":"A","Name":"homepc","ttl":1,"Content":"8.8.8.8"}
如果我将此有效负载剪切并粘贴到 Postman 中,它就会起作用。 Bellow 是 Postman 生成的代码。这有效
curl --location --request PUT 'https://api.cloudflare.com/client/v4/zones/6b5e4cf4634bc20cebc1cd96072c/dns_records/4cb90f1dabfcc63a97055234520' \
--header 'Authorization: Bearer zHl3LhnQzRyw1_' \
--header 'Content-Type: application/json' \
--data-raw '{"type":"A","Name":"homepc","Content":"8.8.8.8","ttl":1}'
谁能帮我弄个水落石出?
提前致谢
弗兰克
我不使用 CloudFlare,但从错误消息看来您缺少 Content-Type
header。尝试添加这一行:
$Headers.Add('Content-Type', 'application/json')
编辑:不需要 header,因为它是使用 Invoke-RestMethod
的 -ContentType
参数指定的。仔细检查命令行,参数 -Body -$Jsonbody
在 JSON body 变量前面有一个错误的 -
,这使得发送的字符串 -{....}
。