【问题标题】:JSON Payload in Matlab webwriteMatlab webwrite 中的 JSON 有效负载
【发布时间】:2017-08-09 10:14:11
【问题描述】:

我正在尝试使用 Matlab webwrite 发送以下 POST 请求:

POST https://url.to.com/hello/world

HEADERS {"API_KEY": "abc123"}

JSON PAYLOAD

{
"return_type": "hello",
"entities": ["ent1"],
"events": ["legal"],
"fields": [],
"filters": {},
"start_date": "2015-01-01 00:00:00",
"end_date": "2016-01-01 00:00:00",
"format": "csv",
"compressed": false
}

在 Matlab 中,我尝试了以下方法:

API_KEY                 = 'abc123';
url                     = 'https://url.to.com/hello/world';

options                 = weboptions(...
    'MediaType', 'application/json', ...
    'HeaderFields', {...
    'API_KEY', API_KEY; ...
    'Content-Type' 'application/json'});

payload.('return_type') = 'hello';
payload.('entities')    = ['ent1'];
payload.('events')      = ['legal'];
payload.('fields')      = [];
payload.('filters')     = {};
payload.('start_date')  = '2015-01-01 00:00:00';
payload.('end_date')    = '2016-01-01 00:00:00';
payload.('format')      = 'csv';
payload.('compressed')  = 'false';

response = webwrite(url, payload, options);

但是,这会返回错误:

服务器返回状态 400 并在 响应对 URL 的请求

我用 Postman 尝试了上面的请求,它成功了。我还验证了我的 Matlab 标头设置正确。所以它必须是我为 JSON 有效负载部分设置的 Matlab。有什么问题?


更新 1:

我注意到,当您运行 jsonencode(payload) 时,它没有返回所需的格式。此外,"[ .. ]" 被丢弃。我认为问题从那里开始,然后请求确实无效。所以我们需要一种方法来在必要时合并括号。

【问题讨论】:

    标签: json matlab rest http


    【解决方案1】:

    在另一个论坛上找到了答案。问题确实是双括号。我们需要如下设置:

    payload.('entities')    = {{'ent1'}};
    

    在此处阅读更多信息:https://nl.mathworks.com/matlabcentral/answers/217716-how-to-pass-single-element-json-arrays-using-webwrite

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-02
      • 1970-01-01
      • 1970-01-01
      • 2018-08-22
      • 1970-01-01
      • 2019-05-31
      相关资源
      最近更新 更多