You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ionic v4 Angular对接Odoo v10报请求类型不匹配错误求助

解决Odoo v10与Ionic v4 Advanced HTTP插件交互的请求类型错误问题

我来帮你分析这个错误并给出可行的解决方案。你遇到的Function declared as capable of handling request of type 'json' but called with a request of type 'http'错误,本质是Odoo的JSON-RPC接口没有识别到你发送的是符合规范的JSON请求,问题主要集中在CSRF token的处理和请求格式配置上。

错误原因拆解

Odoo的/web/database/list是标准的JSON-RPC接口,它对请求的格式和验证有严格要求:

  1. 你硬编码的CSRF_TOKEN完全无效——Odoo的CSRF token是动态生成的,必须从当前会话中获取;
  2. 请求体中多余的csrf_token字段可能干扰Odoo对请求类型的识别;
  3. 可能存在请求体未被正确序列化为JSON格式的情况。

分步解决方案

1. 先动态获取有效的CSRF Token

Odoo的CSRF Token可以通过请求/web/session/get_session_info接口获取,这是发起任何POST请求前的必要步骤:

// 获取会话信息与有效CSRF Token
this.http.get('http://10.42.0.63:8877/web/session/get_session_info', {}, {})
  .then(sessionRes => {
    const validCsrfToken = sessionRes.data.csrf_token;
    // 拿到有效Token后发起数据库列表请求
    this.fetchDatabaseList(validCsrfToken);
  })
  .catch(err => console.error("获取会话信息失败:", err));

2. 修正数据库列表请求的格式

调整请求体和请求头,移除多余字段,严格遵循JSON-RPC 2.0规范:

fetchDatabaseList(csrfToken: string) {
  // 符合JSON-RPC规范的请求体(无多余字段)
  const rpcPayload = {
    jsonrpc: "2.0",
    method: "call",
    id: 1,
    params: {} // /web/database/list不需要额外参数
  };

  // 发起POST请求
  this.http.post(
    "http://10.42.0.63:8877/web/database/list",
    // 若Advanced HTTP插件未自动序列化,手动转为JSON字符串
    JSON.stringify(rpcPayload),
    {
      "Content-Type": "application/json; charset=utf-8",
      "x-csrf-token": csrfToken // 将有效Token放在请求头中
    }
  )
  .then((res: any) => {
    console.log("数据库列表响应:", res.data);
  })
  .catch((err: any) => {
    console.error("请求错误详情:", err);
  });
}

关键注意事项

  • 绝对不能硬编码CSRF Token:Odoo每次会话都会生成新的Token,硬编码会直接导致验证失败,进而触发请求类型识别错误;
  • 精简请求体:/web/database/list不需要在请求体中传递csrf_token,仅需在请求头中设置x-csrf-token即可;
  • 确保请求体是JSON字符串:如果你的Advanced HTTP插件默认将请求体转为form-data格式,一定要手动用JSON.stringify()处理Payload,并明确设置Content-Type为application/json。

内容的提问来源于stack exchange,提问作者Mustafa Lokhandwala

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:56:06