gpt4 book ai didi

java - 将 HTTP "_method" header 传递给 matlab 中的 urlread2 函数

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:07:27 24 4
gpt4 key购买 nike

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

据说这个bug的原因是,不知什么原因,消息体在处理过程中丢失,导致报错。

我现在的问题是这个解决方法在沙箱中确实有效(没有 matlab 代码!)。但是使用此处所示的 matlab 不会改变任何东西,两种情况下的响应相同。所以我猜测 urlread2 函数可能没有按预期处理请求。这里有人有想法吗?

这里的两个依赖项都是众所周知的 matlab 函数:

JSONlab on matlabCentral urlread2 on matlabCentral

最佳答案

urlread2 以及原始 urlread 依赖于不支持在删除请求中包含主体的底层 Java 类

参见: HTTP Delete with Request Body issues

页面上未提及的替代方法是将 Matlab 与 Python 的 Requests 库(需要 2014b 或更新版本)连接起来。我现在正在慢慢研究这个问题,因为它应该允许更优雅地处理 cookie 之类的东西,并正确处理默认 Java 实现所具有的许多错误(例如不在 delete 方法中包含主体)

关于java - 将 HTTP "_method" header 传递给 matlab 中的 urlread2 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29284866/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com