首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有JSON主体的Invoke-RestMethod

带有JSON主体的Invoke-RestMethod
EN

Stack Overflow用户
提问于 2020-09-22 03:33:42
回答 1查看 1.2K关注 0票数 0

我正在尝试编写一个powershell脚本(Powershell6和7),以便从一个带有JSON body的文本文件进行REST调用API。下面是我的代码:

代码语言:javascript
复制
$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文件:

代码语言:javascript
复制
'{
  "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"
      }
    ]
    }
  }
  '

然后,当我执行我的脚本时,我得到这样的结果:

代码语言:javascript
复制
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 body)开头和结尾的引用。但是,如果我从txt文件中删除引号,Powershell将显示以下内容:

代码语言:javascript
复制
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

你知道我该怎么解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-24 06:08:57

解决方法是删除txt文件中的简单引号,并将以下代码添加到我的代码ConvertTo-Json -Depth 5中

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63998857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档