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

Power BI服务中Power Query发送POST请求失败问题排查

Power BI Service刷新时POST请求变为GET导致405错误

我需要在Power Query中发送POST请求生成access token,在Power BI Desktop中请求可正常执行,但发布到Power BI Service后刷新时,系统自动发送了GET请求,触发“Method Not Allowed”错误,响应码405。

错误截图

Power BI Service 405错误截图

使用的Power Query代码

let
base_url = [base_url],
client_secret = [client_secret],
Source  = Json.Document(Web.Contents(base_url&"/oauth/issueToken",
    [ 
      Headers = [#"Content-Type"="application/json"],
      Content=Json.FromValue([
        grant_type = "client_credentials",
        client_id = "powerbi_client",
        client_secret = client_secret
      ])
    ]
)),

token = Source[access_token],

疑问

我不确定问题是否出在请求头或内容上,但在Postman中设置“Content-Type”为“application/json”时可成功发送请求。请问问题出在哪里?我的脚本是否存在问题?


问题原因及解决方法

这个问题是Power BI Service的隐私级别设置和动态URL拼接导致的:

  1. Desktop中Web.Contents的隐私规则不会强制转换请求方法,但发布到Service后,若数据源隐私级别配置不当,Power BI会为缓存或合规性自动将POST转为GET。
  2. 动态拼接URL(比如base_url&"/oauth/issueToken")会导致Service无法正确识别请求的POST特性,进而触发方法转换。

具体修复步骤:

  • 固定请求URL基础部分
    修改代码,将基础URL设为静态值或通过Power BI参数管理固定,避免动态拼接的识别问题:

    let
        base_url = "你的固定基础URL", // 替换为实际值,或使用Power BI参数
        client_secret = [client_secret],
        full_url = base_url & "/oauth/issueToken",
        Source = Json.Document(Web.Contents(full_url,
            [ 
                Headers = [#"Content-Type"="application/json"],
                Content=Json.FromValue([
                    grant_type = "client_credentials",
                    client_id = "powerbi_client",
                    client_secret = client_secret
                ])
            ]
        )),
        token = Source[access_token]
    in
        token
    
  • 配置数据源隐私级别

    1. 在Power BI Desktop中,前往文件>选项和设置>数据源设置
    2. 找到你的OAuth API数据源,点击编辑权限
    3. 将隐私级别设为组织(企业内部API)或公开(公开API),避免Service因隐私隔离修改请求方法。
  • 启用Service的参数刷新权限
    若使用了参数,在Power BI Service的数据集设置中,进入数据集设置>刷新>高级,勾选允许刷新时使用自定义SQL和参数选项。

补充验证

如果上述方法无效,检查API是否要求特定User-Agent头,部分API会拒绝Power BI Service的默认UA,可在Headers中添加自定义UA:

Headers = [#"Content-Type"="application/json", #"User-Agent"="PowerBI/1.0"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 05:12:49