Я использую библиотеку Matlab matlab.net.http для запуска команд get, put и post на веб-сайте.Я могу успешно запустить команды get и post.
Например: MyBody = matlab.net.http.MessageBody(struct('Id',YYYYYY,'WindfarmId',XXX,'Month','YYYY-MM-DD'));
Request = matlab.net.http.RequestMessage;
Request.Method = 'POST';
Request.Header = matlab.net.http.HeaderField('Content-Type','application/json','Authorization',['Basic ' matlab.net.base64encode([Username ':' Password])]);
Request.Body = MyBody;
uri = matlab.net.URI(ENTERURLHERE);
Response = Request.send(uri,MyHTTPOptions);
Это хорошо работает.Однако, используя команду PUT, я должен ввести эквивалент этого тела (написано в синтаксисе curl):
-d '{ "InputValues": [ {"MetricLevelAId": 1, "MetricLevelBId": 1, "InputMetricId": 7, "Value": 56 } ] }'
Я пробовал это:
data_InputValues = struct ('MetricLevelAId',1,'MetricLevelBId',1,'InputMetricId',7,'Value',56);
MyBody = matlab.net.http.MessageBody(struct('InputValues',dataInputValues));
Однако я продолжаю получать следующее 'Bad Request 'ответ от сервера: «Требуются входные значения»
Я думаю, что это связано с тем, как Matlab интерпретирует часть тела запроса и передает его на сервер, то есть он не может правильно передать вложенную структуру,У кого-нибудь есть идеи, как решить эту проблему?
NB потенциально связан с Перевод curl в Matlab / Webwrite (он имеет дело с вложенным значением)