'Invoke-WebRequest -Body Get-Content', нарушающий JSON

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

Когда я отправляю файл с помощью 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?


person Arbiter    schedule 14.06.2019    source источник
comment
Чтобы увидеть, какой запрос действительно отправляется, используйте такой инструмент, как Fiddler. Возможно, что-то не так с заголовками или данные полезной нагрузки неправильно конвертируются при чтении.   -  person vonPryz    schedule 14.06.2019
comment
@vonPryz Спасибо, это отличная идея - я никогда раньше не пользовался таким инструментом, спасибо за ссылку   -  person Arbiter    schedule 14.06.2019
comment
Вы также можете использовать онлайн-инструменты, такие как это, чтобы проверить свои запросы (конечно, сначала отредактировать личные/конфиденциальные данные) и быстро сравнить как они выглядят.   -  person Robert Dyjas    schedule 14.06.2019