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

如何用Java在Kairos Cloud登记人脸图片?Kairos API报错排查

解决Kairos API "one or more subject required" 错误

嘿,这个问题我熟!你碰到的这个错误,核心原因是向Kairos提交的注册请求缺少了必填的subject参数,而且从你的代码片段来看,JSON请求体还没写完,这肯定会导致接口报错。

问题拆解

Kairos的人脸注册(enroll)接口要求请求体里必须有subject字段,用来标记这张人脸对应的用户唯一标识——你代码里的getId = 102正好可以用来当这个值。但你写的JSON字符串只到"sub就断了,既没补全subject的键名,也没加对应的值,接口自然会提示需要主体信息。

修复后的代码

我把你的代码补全并修正了关键问题,你可以参考:

// 从JSP页面传递参数
MultipartFile file = enoroll.getImage(); // 这里的enoroll应该是enroll的笔误吧?
byte[] image = file.getBytes();
String userId = "102"; // 改成更清晰的变量名,建议用字符串类型
String imageBase64 = Base64.getEncoder().encodeToString(image);

// 构建完整的JSON请求体,包含所有必填参数
String requestBody = String.format(
    "{ \"image\": \"%s\", \"subject\": \"%s\", \"gallery_name\": \"your_gallery_name\" }",
    imageBase64, userId
);

Client client = ClientBuilder.newClient();
Entity<String> payload = Entity.json(requestBody);

// 记得补充后续的请求发送逻辑,比如调用Kairos的enroll接口
// Response response = client.target("https://api.kairos.com/enroll")
//                          .request(MediaType.APPLICATION_JSON)
//                          .header("app_id", "你的APP_ID")
//                          .header("app_key", "你的APP_KEY")
//                          .post(payload);

几个要注意的点

  • 必填参数不能少:Kairos enroll接口必须要有三个参数:image(Base64编码的图片)、subject(用户ID)、gallery_name(你要把人脸存到哪个库),缺一个都会报错。
  • JSON格式要正确:一定要确保你的JSON字符串引号配对、逗号分隔正确,别像之前那样写一半就停了。
  • Base64编码要干净:如果生成的Base64字符串里有换行或空格,记得用imageBase64.replaceAll("\\s+", "")去掉,避免接口解析失败。

快速验证方法

你可以先把生成的requestBody打印出来,看看是不是符合下面的格式:

{
  "image": "iVBORw0KGgoAAAANSUhEUgAA...",
  "subject": "102",
  "gallery_name": "my_user_gallery"
}

按这样改完,应该就能顺利把人脸注册到Kairos Cloud啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:21:17