您好我尝试使用matlab中的urlread2函数向REST API发送请求。一般情况下,这确实有效,但对于一个特定的API调用,API中存在文档错误:通常我会使用HTTP方法“DELETE”并传递请求,如下所示:
headers = [http_createHeader('Content-Type','application/json; charset=UTF-8'),...
http_createHeader('Accept','application/json; charset=UTF-8'),...
http_createHeader('X-IG-API-KEY',api_key)];
json_body = savejson('',body);
response = urlread2(myURL,'DELETE',json_body,headers);
这会导致错误。相反,我建议使用:
headers = [http_createHeader('Content-Type','application/json; charset=UTF-8'),...
http_createHeader('Accept','application/json; charset=UTF-8'),...
http_createHeader('X-IG-API-KEY',api_key,...
http_createHeader('_method','DELETE')];
json_body = savejson('',body);
response = urlread2(myURL,'POST',json_body,headers);
据说这个错误的原因是,由于未知原因,邮件正文在此过程中丢失并产生错误。
我现在的问题是这个解决方法在沙箱中工作(没有matlab代码!)。但是使用这里显示的matlab并没有改变任何东西,两种情况都有相同的响应。 所以我猜urlread2函数可能无法按预期处理请求。有没有人有这个想法?
这里的两个依赖项都是众所周知的matlab函数:
答案 0 :(得分:1)
urlread2与原始urlread一起依赖于不支持包含删除请求的正文的底层Java类
请参阅: HTTP Delete with Request Body issues
页面上未提及的替代方法是将Matlab与Python的Requests库(需要2014b或更新版本)连接。我现在正在慢慢研究这个问题,因为它应该允许更好地处理像cookie这样的东西以及正确处理默认Java实现所具有的许多错误(例如在删除方法中不包括正文)