我正在使用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));
但是我一直从服务器收到以下“错误请求”响应: “需要输入值”
我认为这与Matlab解释请求的正文部分并将其传递给服务器的方式有关,即它无法正确传递嵌套结构。任何人都有任何想法如何解决这个问题?
N.B。可能与Translating curl into Matlab/Webwrite相关联(它正在处理嵌套值)