我正在使用 Matlab 的 matlab.net.http 库来启动获取、放置和发布命令到网站。我可以成功启动 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));
但是,我不断收到来自服务器的以下“错误请求”响应:“需要输入值”
我认为这与 Matlab 解释请求正文部分并将其传递给服务器的方式有关,即它无法正确传递嵌套结构。任何人有任何想法如何解决这个问题?
NB 可能与将curl 转换为 Matlab/Webwrite相关联(它正在处理嵌套值)