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

Azure Data Factory调用外部API遇415错误,JSON被Some()包裹求解

解决Azure Data Factory数据流API调用415错误(请求JSON含Some())

问题根源

状态码415代表不支持的媒体类型,结合你提到的请求JSON被Some()包裹的情况,核心原因是derivejsonbody步骤构造JSON时,引用的Base64编码列或文件名列被处理成了Optional类型(比如存在空值、数据流内部类型识别异常),导致生成的JSON结构不符合API预期,无法被正常解析。

修复步骤

1. 预处理列值,消除Optional包装

在selectrequiredcolumn步骤之后,新增一个派生列步骤,用coalesce()函数处理可能的空值,并强制转换为字符串类型:

coalesce(base64_content, '') as base64_content
coalesce(source_filename, '') as source_filename

这一步能确保列值是确定的字符串,而非带包装的Optional类型。

2. 正确构造JSON请求体

在derivejsonbody步骤中,必须用toString()函数将列值转为纯字符串后再嵌入JSON,避免类型问题。假设API需要的JSON结构是:

{
  "fileContent": "BASE64编码内容",
  "fileName": "源文件名"
}

那么派生列的表达式应写为:

'{"fileContent": "' + toString(base64_content) + '", "fileName": "' + toString(source_filename) + '"}'

或者用更安全的json()函数构造:

json(concat('{"fileContent": "', toString(base64_content), '", "fileName": "', toString(source_filename), '"}'))

3. 检查REST调用的请求头

确认externalcall1步骤的请求头中已添加Content-Type: application/json——很多415错误都是因为没声明正确的媒体类型,API无法识别请求格式。

4. 验证JSON结构

在数据流中临时添加一个Blob接收器,输出derivejsonbody的结果,检查生成的JSON是否确实没有Some()包裹,结构是否完全匹配API要求。

额外注意

如果源文件可能为空,在SrcInputFile读取时开启跳过空文件选项,避免空值引发的类型包装问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:15:10