json - 使用 JSON 正文调用 RestMethod
问题描述
我正在尝试编写一个 powershell 脚本(powershell 6 和 7)以从带有 JSON 正文的文本文件中进行 REST 调用 API。这是我的代码:
$uri = 'URI'
$json = Get-Content 'TXT_FILE_WITH_JSON_BODY' | Out-String | ConvertFrom-Json | ConvertTo-Json | %{[regex]::Unescape($_)}
$username = 'USER'
$password = 'PASSWORD'
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username,$password)))
Invoke-RestMethod -Method POST -SkipCertificateCheck -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} $uri -body $json -ContentType "application/json"
我的txt文件:
'{
"apiversion": "3.0",
"process": {
"profileId": "ID",
"jobType": "TYPE",
"origin": "ORIGIN",
"processWhileGrowing": true
},
"jobSource": {
"sources": [
{
"uri": "\\\\\\\\10.22.6.250\\\\share\\\\test\\\\TEST01.mov"
}
],
"metadata": [
{
"name": "Description",
"value": "Bla bla bla"
},
{
"name": "title",
"value": "Title"
},
{
"name": "channel",
"value": "SRV1"
},
,
{
"name": "type",
"value": "TYPE01"
},
{
"name": "source",
"value": "SOURCE01"
}
]
}
}
'
然后当我执行我的脚本时,我得到了这个:
PS F:\Desktop> .\test01.ps1
Invoke-RestMethod: F:\Desktop\test01.ps1:6
Line |
6 | Invoke-RestMethod -Method POST -SkipCertificateCheck -Headers @{Autho …
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| {
"status": "HTTP_ERROR",
"message": "SERVER_ERROR",
"message_detail": null
}
我的第一个想法是我的 REST API 对我的 txt 文件(json 正文)开头和结尾的引用没有很好的响应。但是,如果我从我的 txt 文件中删除引号,Powershell 会说以下内容:
PS C:\Users\Brice> F:\Desktop\jsonconvert.ps1
ConvertFrom-Json : Invalid JSON primitive: .
At F:\Desktop\jsonconvert.ps1:1 char:63
+ ... nt 'F:\Desktop\1.txt' | Out-String | ConvertFrom-Json | Conve ...
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [ConvertFrom-Json], ArgumentException
+ FullyQualifiedErrorId : System.ArgumentException,Microsoft.PowerShell.Commands.ConvertFromJsonCommand
知道如何解决这个问题吗?
解决方案
通过删除 txt 文件中的简单引号并将以下内容添加到我的代码 ConvertTo-Json -Depth 5 来解决
推荐阅读
- javafx - 如何为 JavaFX TableView 列制作通用 TableColumn 渲染器
- npm - 无法解决节点项目中的对等依赖项
- c# - 为远程进程从外部调用 FreeLibraryAndExitThread
- python - 使用扩展的 django 用户模型更新配置文件模型中的数据
- mqtt - 我正在编写一个代码来读取 DHT11 值并控制 4 个继电器但温度。传感器每次都向我显示“nan”
- javascript - 有没有办法在不篡改浏览器历史状态的情况下使用后退按钮关闭模式?
- vim - 如何使 vimdiff 检测行尾字符的差异(dos vs unix)
- ios - NEHotspotConfiguration 无效的 WPA/WPA2 密码长度
- typescript - JSX 使用 Typescript 泛型来渲染组件而不是使用开关
- kubernetes - 如何仅删除节点镜像 pod 创建?