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

Azure表存储REST实体组事务请求返回InvalidInput错误如何解决

排查解决步骤

1 先修正基础代码错误

  • Dart的请求头Map定义语法错误:所有键值对末尾缺失逗号,先修正这个语法问题,避免运行时参数丢失。
  • 修正请求头大小写:顶层请求头的content-type改为首字母大写的Content-Type,避免批量接口的严格校验不通过。
  • 修正x-ms-date格式:Azure Storage 要求该字段必须符合 RFC 1123 规范,示例格式为Mon, 06 Dec 2021 22:12:15 GMT,你当前使用的2021-12-06 22:12:15.862319Z不符合要求,批量请求对该字段的校验远严格于单条请求,这是高频报错原因。
  • 请求体里的JSON转义错误:你代码里写的"是HTML转义字符,实际发送时不会被识别为JSON的双引号,要替换为普通双引号,或者直接用Dart的jsonEncode方法生成JSON字符串,不要手动拼接带HTML转义的内容。

2 修正批量请求格式错误

  • 移除边界分隔符后的多余空格:你当前的--changeset_xxx、--batch_xxx分隔符末尾带有多余空格,会导致服务端无法正确识别分段边界,直接触发400错误,必须保证分隔符和定义完全一致,前后无多余空格。
  • 子请求改用相对路径:官方要求批量事务内的子请求不能写完整域名,要把POST https://stg1235.table.core.windows.net/Tahsel HTTP/1.1改为POST /Tahsel HTTP/1.1,写全路径会被判定为无效输入。
  • 移除子请求内的重复头:x-ms-date、x-ms-version这两个参数已经在顶层请求头里传递,不需要在子请求里重复携带,避免参数冲突。
  • 不要硬编码Content-Length:每次动态计算JSON字节长度后再赋值,避免手动写的长度和实际payload长度不符。

3 修正请求发送方式

  • 不要用http.MultipartRequest发送该请求:这个类会自动处理multipart结构的编码、边界,会覆盖你手动拼接的请求体结构,直接用http.Request类,手动赋值headers和已经拼接好的body即可。
  • 确保请求体编码为UTF-8:发送时显式指定body的编码为UTF-8,避免Dart自动转码破坏payload结构。

4 校验事务规则适配

你当前的两个操作PartitionKey都为info,符合同分区事务要求,额外确认两个点即可:

  • 单个批量事务最多支持100个操作,总payload不能超过4MB
  • 如果你是新增数据,不需要携带If-Match: *头,该头是用于更新/删除操作的匹配校验,新增时携带可能触发校验错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:45:02