如何在PowerShell的Invoke-RestMethod中发送长HTML作为JSON请求体
解决PowerShell中HTML作为JSON请求体值的400错误问题
直接手动拼接JSON字符串时,HTML里的双引号、&、换行等特殊字符会破坏JSON语法结构,导致服务器无法正确解析请求,返回400错误。正确的做法是利用PowerShell的对象转JSON功能自动处理特殊字符转义:
步骤1:准备HTML内容
先把HTML内容读取到变量中(假设HTML存储在本地文件):
$htmlContent = Get-Content -Path "path/to/your/webpage.html" -Raw
如果HTML已经是字符串变量,直接使用即可。
步骤2:构建请求体对象并转为合法JSON
创建PowerShell哈希表对象,再用ConvertTo-Json自动转义特殊字符:
# 构建请求体对象 $requestBodyObject = @( @{ key = "My-Key" value = $htmlContent } ) # 转为JSON字符串,自动处理特殊字符转义 $jsonBody = $requestBodyObject | ConvertTo-Json -Depth 10
注:
-Depth参数默认是2,如果HTML内容包含多层嵌套结构(比如内嵌的JSON数据),需要适当调高这个值确保转义完整。
步骤3:发送请求
用处理好的JSON作为请求体发送:
$headers = @{ "Content-Type" = "application/json" "X-Auth-Email" = "your-email@example.com" # Cloudflare API需补充X-Auth-Key头 "X-Auth-Key" = "your-api-key" } $response = Invoke-RestMethod -Uri 'https://api.cloudflare.com/client/v4/accounts/account_identifier/storage/kv/namespaces/namespace_identifier/bulk' ` -Method PUT ` -Headers $headers ` -Body $jsonBody
原方法失败原因
手动编写JSON字符串时,HTML中的双引号会和JSON的字符串边界引号冲突,&、换行等字符也不符合JSON语法规范,导致生成的JSON格式无效。而ConvertTo-Json会自动将这些特殊字符转义为JSON允许的格式(比如双引号转成\",换行转成\n等),确保请求体符合JSON语法标准,服务器能正确解析。
内容的提问来源于stack exchange,提问作者Ghan
相关产品推荐
相关产品推荐

