如何用Python编写PowerBI HTTP请求 排查404与JSON解码报错
Power BI 创建配置文件接口请求报错排查方案
你提供的官方接口参考截图如下:
报错根因
404状态码触发原因
- 接口地址拼写错误:该接口为服务主体配置文件创建接口,官方合法端点为
https://api.powerbi.com/v1.0/myorg/profiles,常见拼写错误包括API版本错写为v2.0、路径多拼接/遗漏字段、末尾携带多余斜杠 - 权限不足:Power BI REST API存在特殊逻辑,当调用方所持令牌缺少
Profile.ReadWrite.All权限、或服务主体未被授予Power BI API访问权限时,会直接返回404而非403状态码,很容易误导排查方向 - 请求方法错误:该接口仅支持POST方法,使用GET/PUT等其他方法请求会直接返回404
JSON解码错误触发原因
代码中未校验响应状态就直接调用.json()解析响应内容,当接口返回非200状态的HTML错误页、或创建成功返回空响应体时,响应内容不符合JSON格式,就会抛出该解码异常。
可直接运行的正确代码
import requests # 已提前获取的授权令牌 Token = "替换为你实际拿到的有效令牌值" api_url = "https://api.powerbi.com/v1.0/myorg/profiles" # 构造请求头,注意Authorization头必须带Bearer前缀 headers = { "Authorization": f"Bearer {Token}", "Content-Type": "application/json" } # 请求体,仅需传入要创建的配置文件名称 payload = { "displayName": "替换为你自定义的配置文件名称" } resp = requests.post(url=api_url, headers=headers, json=payload) # 先校验响应状态,再处理返回内容 if resp.status_code in (200, 201): try: profile_info = resp.json() print("配置文件创建成功,返回信息:", profile_info) except requests.exceptions.JSONDecodeError: print("配置文件创建成功,接口无返回体") else: print(f"请求失败,状态码:{resp.status_code}") print("错误原始信息:", resp.text)
排查校验点
- 若使用服务主体认证,需提前在Power BI管理后台的租户设置中,开启「允许服务主体创建和使用配置文件」「允许服务主体访问Power BI API」两个开关,并将服务主体加入对应允许的安全组
- 令牌不要携带多余空格、特殊字符,
Bearer前缀和令牌值之间保留一个半角空格 - 不要在请求URL中拼接多余查询参数,该接口POST请求不需要额外传参
内容的提问来源于stack exchange,提问作者Tal_87_il
相关产品推荐
相关产品推荐

