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

DataFactory调用Business Central REST API参数空格转义致请求失败

问题描述

在Azure Data Factory中发起REST API GET请求筛选postingDate字段获取近期数据时,DataFactory会自动将参数中的空格替换为%20,导致请求无法正常工作。

预期的有效API URL格式:

https://api.businesscentral.dynamics.com/v2.0/abc/abc/api/abc/extendedPowerBI/v2.0/companies(abc)/valueEntries?$select=entryNo,externalDocumentNo,varianceType,dimensionSetID,documentNo,orderLineNo,documentLineNo,no,postingDate,costPerUnit,type,invoicedQuantity,documentDate,locationCode,genProdPostingGroup,inventoryPostingGroup,salespersPurchCode,itemLedgerEntryType,itemLedgerEntryQuantity,itemLedgerEntryNo,itemNo,sourceNo,sourceCode,costAmountExpected,costAmountActual,salesAmountActual,documentType,itemChargeNo,costAmountNonInvtbl,entryType,discountAmount&$filter=postingDate gt 2024-11-10
解决方案

方法1:关闭URL编码选项

在DataFactory的REST链接服务配置中,找到Encode URL选项,将其设置为False。这样DataFactory就不会自动对参数中的空格进行URL编码,保留原始空格格式。

方法2:直接拼接完整URL到基础路径

不将$filter作为单独参数添加,而是将包含$select和$filter的完整查询字符串直接拼在API的基础URL后面,作为活动的请求URL。这种方式可以绕过DataFactory的参数自动编码逻辑。

方法3:使用动态内容构造筛选条件

如果需要动态生成日期(比如获取最近N天的数据),可以用DataFactory表达式构造$filter参数:

  1. 在REST活动的查询参数中,添加键为$filter的参数
  2. 值填写动态表达式,例如:
    @concat('postingDate gt ', formatDateTime(addDays(utcnow(), -3), 'yyyy-MM-dd'))
    
  3. 确保链接服务的Encode URL已关闭,避免空格被编码。

补充说明

OData规范中,$filter里的运算符(如gt)前后的空格是可选的,也可以直接写为无空格形式:postingDategt2024-11-10,部分API也能识别这种格式,可尝试该写法避免空格编码问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 08:55:08