'Invoke-WebRequest -Body Get-Content', нарушающий JSON - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь отправить содержимое файла JSON в API, используя Invoke-WebRequest. Я проверил файл JSON, и он здоров. Я также могу успешно отправить файл JSON с помощью клиента REST (Postman и Insomnia), поэтому я знаю, что данные и API JSON в порядке.

Когда я отправляю файл с помощью PowerShell, я получаю ответ 400 400: "The Request Content is not a valid JSON string".

Я загружаю содержимое файла с помощью Get-Content $File.FullName -Raw, похоже, в этом и заключается проблема.

function Send-JSONFiles(){

    $FilesToUpload = @(Get-ChildItem -Path "$ProgramPath\Uploads" -filter *.json)
    $Target = "https://theapi.com/api"

    Foreach ($File in $FilesToUpload){

        if($Dev){Write-host "Sending" $File.FullName "to" $Target$URI}

        Try{

            Invoke-WebRequest -uri "$Target" -Method Post -ContentType "application/json" -Headers @{ "Authorization" = "bearer " + $Global:token; "Cache-Control" = "no-cache"; } -Body (Get-Content $File.FullName -Raw)

        }Catch{
            Write-host $_
            Write-host $_.Exception.Response.StatusCode.Value__
            Write-host ($_.ErrorDetails.Message).error
        }
    }
}

Я ожидал бы, что это будет работать так же, как мои клиенты REST. Получите данные JSON из файла и поместите их в цель - я не уверен, почему это нарушит JSON?

...