PowerShell неправильно вызывает REST API - PullRequest
0 голосов
/ 25 октября 2018

У меня есть POST REST API следующим образом

http://9e459ba0.ngrok.io/SizeAuditor/RecordBaselineData

Он вызывается с этим телом JSON в качестве полезной нагрузки и правильно вставляет данные в требуемую базу данных.

[
    {
        "projectName" : "fab",
        "commitHash" : "4251CA37541CE059CF354CCD7F1E2AAFD6C2342F",
        "size" :
        {
            "fileName" : "hosts",
            "fileSize" : 100
        }
    }
]

Однакокогда я использую PowerShell, как показано ниже, API вызывается, но возвращается с ошибкой, что приводит меня к мысли, что полезная нагрузка не передается правильно.

$paramsJson = '[ { "projectName" : "fab", "commitHash" : "4251CA37541CE059CF354CCD7F1E2AAFD6C2342F", "size" : { "fileName" : "hosts", "fileSize" : 100 } } ]'

$params = ConvertFrom-Json -InputObject $paramsJson

echo $params

$responseData = Invoke-RestMethod -Uri http://9e459ba0.ngrok.io/SizeAuditor/RecordBaselineData -Method Post -ContentType 'application/json' -Body $params;

echo $responseData

Я попытался распечатать объект $params, а также преобразовал его обратно в JSON, используя $params | ConvertTo-Json, и, похоже, он в правильном формате, я ожидаю, что API получит.Пожалуйста, подскажите, что я делаю неправильно в PowerShell.

РЕДАКТИРОВАТЬ:

Сообщение об ошибке выглядит следующим образом, и в некоторых функциях происходит сбой (я написал RESTAPI тоже).Однако я чувствую, что это связано с форматом полезной нагрузки, а не с фактическими данными, которые передаются, поскольку формат JSON, передаваемый через Postman, успешно выполняется.

Invoke-RestMethod : "An error has occurred.Object reference not set to an
instance of an object.System.NullReferenceException
   at OneShip.Service.Workers.SizeAuditor.AzureTableStorageProvider.InsertBaselineDataIntoDatabase(BaselineData[] baselineData) in D:\\MyService\\Service\\src\\Workers\\SizeAuditor\\AzureTableStorageProvider.cs:line 52
\u000a
   at OneShip.Service.SizeAuditorController.<RecordBaselineData>d__7.MoveNext() in D:\\MyService\\Service\\src\\SizeAuditorController.cs:line 76&#xD;\u000a
--- End of stack trace from previous location where exception was thrown ---&#xD;\u000a
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()&#xD;\u000a
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)&#xD;\u000a
   at System.Threading.Tasks.TaskHelpersExtensions.<CastToObject>d__3`1.MoveNext()&#xD;\u000a
--- End of stack trace from previous location where exception was thrown ---&#xD;\u000a
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()&#xD;\u000a
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)&#xD;\u000a
   at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__0.MoveNext()&#xD;\u000a
--- End of stack trace from previous location where exception was thrown ---&#xD;\u000a
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()&#xD;\u000a
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)&#xD;\u000a
   at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext()&#xD;\u000a
--- End of stack trace from previous location where exception was thrown ---&#xD;\u000a
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()&#xD;\u000a
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)&#xD;\u000a
   at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__1.MoveNext()"
At line:1 char:17
+ ... sponseData = Invoke-RestMethod -Uri http://9e459ba0.ngrok.io/SizeAudi ...
+                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...