400 '$.payload.messages.text' length must be less or equal than 1048576; (reques...
错误信息
API Error: 400 '$.payload.messages.text' length must be less or equal than 1048576; (request id: 20260822115420030318246c14228f5Z37haJwp)
AI 解决方案
🔍 错误分析
1. 🌐 错误翻译
原文:API Error: 400 '$.payload.messages.text' length must be less or equal than 1048576; (request id: 20260822115420030318246c14228f5Z37haJwp)
译文:API错误:400 '$.payload.messages.text' 的长度必须小于或等于1048576;(请求ID:20260822115420030318246c14228f5Z37haJwp)
2. 🎯 原因分析
该错误是API请求参数校验失败导致的,核心原因在于
payload.messages.text 字段的内容长度超出了API规定的上限。具体表现为文本内容超过了 1,048,576 字节(即1MB),触发了接口的参数长度限制校验,导致400错误。3. 💡 解决方案
需要对
payload.messages.text 中的文本内容进行截断或分块处理,确保单段文本长度不超过1,048,576字节。以下是Python示例代码,实现文本自动截断:def truncate_text_by_bytes(text, max_bytes=1048576, encoding='utf-8'):
"""
将文本截断至指定字节数内
:param text: 原始文本
:param max_bytes: 最大允许字节数
:param encoding: 编码格式
:return: 截断后的文本
"""
try:
# 先将文本编码为字节,检查是否超过限制
encoded_bytes = text.encode(encoding)
if len(encoded_bytes) <= max_bytes:
return text
# 从后向前截断,保留最大允许长度,确保截断点在字符边界
return encoded_bytes[:max_bytes].decode(encoding, errors='ignore')
except Exception as e:
# 编码异常时的兜底处理,直接按字节截断后忽略错误解码
return text[:max_bytes]
# 使用示例:对payload中需要发送的文本进行处理
original_text = "这里是超长的待发送文本内容..." # 替换为实际要发送的文本
truncated_text = truncate_text_by_bytes(original_text, max_bytes=1048576)
# 构造符合要求的payload(根据实际情况调整字段结构)
payload = {
"messages": [
{
"text": truncated_text # 使用截断后的文本
}
]
}
4. 🛡️ 预防措施
len(text.encode('utf-8'))),提前发现潜在超长内容。