matlab - 在 MATLAB 中通过 HTTP 接收数据

标签 matlab http

我已经在 MATLAB 论坛上发布了这个问题,但我仍然希望得到解决方案/回复。

我需要访问服务器上的 CSV 格式数据,这需要一个 token 才能获得访问权限。我的同事通常使用 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 接口(interface)的 MATLAB 文档。但是,我注意到没有等效的 get 命令,只有 send。 我认为 token 应该作为 'Credentials' 输入到 matlab.net.http.HTTPOptions 对象中。同样, header 可以是 'Header' matlab.net.http.RequestMessage。此外,我认为有效载荷可以通过'getFields'获得。这些假设是否正确?

如何在 MATLAB 中最好地完成这项任务?此外,如何将数据从 CSV 更改为矩阵/单元格供以后使用?我不认为在这里使用 csvreadreadmatrix 是合适的。

我的替代方案是用于 Python 的 MATLAB 引擎,但我更喜欢简洁的全 MATLAB 解决方案。

最佳答案

从 Python 请求模块的文档来看,payload 实际上只用于 encode the 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);

关于matlab - 在 MATLAB 中通过 HTTP 接收数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57806162/

相关文章:

matlab - 轮廓中缺少刻度

rest - TREST请求 : Is it possible to use custom media types in a POST request?

python - requests 的 stream=True 选项如何一次一个 block 地流式传输数据?

json - Elixir Plug.Parsers.JSON 的访问结果

java - 如何将 POST 表单数据从 HTML 传递到 Java Rest Api

Python 等效于 MATLAB 的冒号运算符

performance - 为什么在类属性中改变元胞数组这么慢?

matlab - Matlab GUI 或图例滚动条中可调整大小的图例

由于在发送到服务器之前添加了 URL,AJAX 请求无效

matlab - MATLAB 中的图例框大小不正确?