Почему я продолжаю получать 400 искаженных данных, когда я проверял полезную нагрузку Response в Rest Client? - PullRequest
0 голосов
/ 13 февраля 2019

Это похоже на вопрос, который я задавал ранее, но в этом сценарии я продолжаю получать 400 искаженных данных, даже несмотря на то, что я проверил полезную нагрузку ответа на Rest Client;ссылка ниже может направить вас к изображению с данными.

1) https://drive.google.com/file/d/1gJ_och30jQTrcT36RvIbQSmxtqu0zJdD/view?usp=sharing

2) https://drive.google.com/file/d/1uZho4-73NRs4gGtXph25nRxUbyH-eq-f/view

Выход:

Invoke-RestMethod : 400 MalformedCONTENTThe data request is malformed. Required content is missing or empty.Could not acquire data.
At C:\Users\sams\Documents\Reader_Test\2 tRY hMM.ps1:29 char:3
+   Invoke-RestMethod -Method PUT -Uri $url -Headers $headers3 -Body $b ...
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand

Текущий код:

$url = "http://##.###.###.#:####/reader/blink-led"

$headers3 = @{
    "Host"="##.###.###.#:####";
    "Authorization"="Basic dhgageyngixjsklxsfnhjopughNzk5fkswpi"
}     

$body = @'
  {
   "payload": {
          "sensorId": "se:eh:fu:co:c7",
          "blinkCount": 5,
          "blinkOn": 200,
          "blinkOff": 200,
          "countPause": 2,
          "timeout": 5000
      }
  }
  '@

  Invoke-RestMethod -Method PUT -Uri $url -Headers $headers3 -Body $body -ContentType "application/json"

Почему говорится, что необходимый контент отсутствует или пуст?Я проверил полезную нагрузку запроса на клиенте отдыха, и она работает.Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Часть JSON действительна, а here-string, который вы используете, - нет.Есть два пробела перед окончательным '@, которые вы должны удалить: если вы посмотрите на это в редакторе ISE, вы увидите красную волнистую линию, и если навести на нее курсор мыши, вы увидите:

enter image description here

$body = @'
  {
   "payload": {
          "sensorId": "se:eh:fu:co:c7",
          "blinkCount": 5,
          "blinkOn": 200,
          "blinkOff": 200,
          "countPause": 2,
          "timeout": 5000
      }
  }
'@
0 голосов
/ 13 февраля 2019

Предполагая, что полезная нагрузка правильная, попробуйте следующее (один раз с -ContentType "application / json", один раз без).

$uri = "http://##.###.###.#:####/reader/blink-led";

$headers = @{
    Host = "##.###.###.#:####";
    Authorization = "Basic dhgageyngixjsklxsfnhjopughNzk5fkswpi"
};

$body = @{ payload = @{ sensorId = 'se:eh:fu:co:c7'; blinkCount = 5; blinkOn = 200; blinkOff = 200; countPause = 2; timeout = 5000 }} | ConvertTo-Json;

Invoke-RestMethod -Method PUT -Uri $uri -Headers $headers -Body $body -ContentType "application/json";
...