【问题标题】:pass HTTP "_method" header to urlread2 function in matlab将HTTP“_method”标头传递给matlab中的urlread2函数
【发布时间】:2015-03-26 17:17:31
【问题描述】:

您好,我尝试使用 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

【问题讨论】:

    标签: java json matlab rest http


    【解决方案1】:

    urlread2 与原始 urlread 一起依赖于不支持在删除请求中包含正文的底层 Java 类

    见: HTTP Delete with Request Body issues

    页面上未提及的另一种方法是将 Matlab 与 Python 的 Requests 库(需要 2014b 或更高版本)接口。我现在正在慢慢解决这个问题,因为它应该允许更优雅地处理诸如 cookie 之类的事情,并正确处理默认 Java 实现所具有的许多错误(例如在删除方法中不包括主体)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多