matlab - 在 MATLAB 中通过 HTTP 接收数据
问题描述
我已经在 MATLAB 论坛上发布了这个问题,但我仍然希望得到解决方案/回复。
我需要在服务器上访问 CSV 格式的数据,这需要一个令牌才能授予我访问权限。我的同事通常使用 Python 访问此服务。但是,由于我的代码都在 MATLAB 中,我更喜欢 MATLAB 中的数据,这样我就可以使用我已经验证过的现有函数。在 Python 中,我们使用 requests 包如下:
timeseries_url = 'https:// .... /csv'
payload = { 'variable': ['var1','var2'], 'platform_serial' : 'name_of_platform' , 'from' : 'start_time' , 'to' : 'end_time' }
header = {'Authorization': 'Bearer ' + 'authorisation_token'}
# Get the response:
response = requests.get(timeseries_url, headers=header, params=payload)
df = pandas.read_csv(io.StringIO(response.text))
我一直在阅读 HTTP 接口的 MATLAB 文档。但是,我注意到没有等效的 get 命令,而只有 send。我认为令牌应该matlab.net.http.HTTPOptions
作为'Credentials'
. 同样,标题可能是'Header'
matlab.net.http.RequestMessage
. 此外,我认为有效载荷可以通过'getFields'
. 这些假设是否正确?
如何在 MATLAB 中最好地完成这项任务?此外,如何将数据从 CSV 更改为矩阵/单元格以供以后使用?我不认为使用csvread
or readmatrix
here 是合适的。
我的替代方案是用于 Python 的 MATLAB 引擎,但我更喜欢简洁的全 MATLAB 解决方案。
解决方案
从 Python requests 模块的文档来看,payload 实际上只用于对 URL 进行编码。
这是 MATLAB 的示例代码,您应该能够适应您的数据以提交成功的请求:
% URL and token data.
timeseries_url = 'https:// .... /csv';
auth_token = '';
% Structure for the payload.
struct_payload.key1 = 'value1'
struct_payload.key2 = 'value2'
% Find names of fields in struct_payload.
field_names = fieldnames(struct_payload);
% Format url for query.
encoded_url = [timeseries_url '?'];
for i = 1:numel(field_names)
encoded_url = [encoded_url field_names{i} '=' struct_payload.(field_names{i}) '&'];
end
encoded_url(end) = [];
% Create weboptions object with headers.
options = weboptions('HeaderFields',{'Authorization' ['Bearer ' auth_token]});
% Submit webread request.
data = webread(encoded_url, options);
推荐阅读
- python - 我无法安装 install firebase-admin
- java - 多个复选框值到弹簧控制器
- ios - 如何将 addTarget 与标签、imageview 或 uiview 一起使用?
- python - Python if 条件简化
- google-apps-script - 如何从插件中获取谷歌应用脚本中活动页面的 DOM 元素
- google-cloud-platform - 如何在 GCE 实例上清理与 SSH 元数据关联的用户?
- git - 使用 git bash 时权限被拒绝
- amazon-web-services - 当两个 DynamoDB 表都具有按需容量时,如何使用 Data Pipeline 将数据复制到另一个 DynamoDB 表
- javascript - 三元运算符如何比较 JavaScript 中的字符和数字?
- php - 由于“字符串”导致错误的字段 INTO OUTFILE mysql