You need to enable JavaScript to run this app. MATLAB通过HTTP对接SiriDB查询时报未认证错误
优惠活动
大模型
产品
解决方案
定价
更多

MATLAB通过HTTP对接SiriDB查询时报未认证错误

报错核心原因
  • HTTP 协议本身是无状态的,MATLAB 内置 matlab.net.http 模块在默认的静态send调用模式下,不会跨请求自动缓存登录阶段返回的认证凭证(会话Cookie、访问令牌)。
  • 现有代码中登录、查询是两次完全独立的裸请求,第二次请求没有携带任何服务端可识别的合法认证标识,哪怕登录接口返回正常200响应,服务端也会直接判定请求未认证,抛出not authenticated错误。
  • 原代码中查询阶段重新初始化了完全空白的RequestMessage,没有任何认证上下文传递,必然触发报错。
修复方案
  • 共享HTTP客户端会话,自动维护认证状态
    初始化带Cookie自动持久化的HTTPClient实例,由客户端统一存储、传递登录返回的会话凭证,无需手动提取认证字段:
    % 初始化自动维护会话的HTTP客户端
    client = matlab.net.http.HTTPClient('KeepCookie', true);
    
    % 1. 执行登录请求
    login_uri = 'http://example_adress/auth/login';
    login_payload = jsondecode('{"username": "my_user_name", "password": "my_password"}');
    login_req = RequestMessage('POST', ContentTypeField('application/json'), login_payload);
    login_resp = client.send(login_req, login_uri);
    
    % 2. 同客户端实例发起查询请求,自动携带已存储的认证Cookie
    query_uri = 'http://example_api';
    query_payload = jsondecode('{"query": "select last() from ''example_query''"}');
    query_req = RequestMessage('POST', ContentTypeField('application/json'), query_payload);
    query_resp = client.send(query_req, query_uri);
    
    disp(query_resp.Body.string)
    
  • 手动附加Token认证字段
    如果SiriDB接口采用Token认证而非Cookie会话模式,直接从登录响应中提取令牌,手动构造认证头附加到查询请求中:
    % 从登录响应体中解析访问令牌
    token_info = jsondecode(login_resp.Body.string);
    access_token = token_info.access_token;
    
    % 构造认证头
    auth_header = matlab.net.http.HeaderField('Authorization', ['Bearer ', access_token]);
    % 构造带认证头的查询请求
    query_req = RequestMessage('POST', [ContentTypeField('application/json'), auth_header], query_payload);
    query_resp = client.send(query_req, query_uri);
    
操作注意点
  • 不要脱离统一客户端实例直接调用静态send方法,这类调用每次都会生成全新的请求上下文,完全不共享之前的会话状态。
  • 发起查询前可以打印登录响应的Header字段,确认认证凭证的具体形式(Cookie/Token格式),避免匹配错接口要求的认证规范。

内容的提问来源于stack exchange,提问作者Gökalp Ayaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.29 21:54:03