我正在尝试使用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,其中包含消息“Bad Request” 对URL请求的响应
我使用 Postman 尝试了上述请求,但它确实有效。我还验证了我的Matlab标题已正确设置。所以它必须是我的Matlab设置JSON有效负载部分。有什么问题?
更新1:
我注意到当你运行jsonencode(payload)
时它没有返回所需的格式。而且,"[ .. ]"
被淘汰了。我认为问题从那里开始,然后请求变得无效。因此,我们需要一种方法在必要时合并括号。
答案 0 :(得分:0)
在另一个论坛上找到答案。问题确实是双括号。我们需要设置如下:
payload.('entities') = {{'ent1'}};