您好,我尝试使用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函数:
JSONlab on matlabCentral urlread2 on matlabCentral
发布于 2015-03-30 05:05:00
urlread2以及原始的urlread依赖于底层的Java类,这些类不支持在delete请求中包含主体
请参阅:HTTP Delete with Request Body issues
页面上没有提到的另一种方法是将Matlab与Python的Requests库连接(需要2014b或更新版本)。我现在正在慢慢地做这件事,因为它应该允许更优雅地处理cookie之类的事情,以及正确地处理默认Java实现中的许多bug(例如在delete方法中不包含主体)。
https://stackoverflow.com/questions/29284866
复制相似问题