У меня есть 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
\u000a
--- End of stack trace from previous location where exception was thrown ---
\u000a
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
\u000a
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
\u000a
at System.Threading.Tasks.TaskHelpersExtensions.<CastToObject>d__3`1.MoveNext()
\u000a
--- End of stack trace from previous location where exception was thrown ---
\u000a
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
\u000a
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
\u000a
at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__0.MoveNext()
\u000a
--- End of stack trace from previous location where exception was thrown ---
\u000a
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
\u000a
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
\u000a
at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext()
\u000a
--- End of stack trace from previous location where exception was thrown ---
\u000a
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
\u000a
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
\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