Power BI Embedded:获取报告详细信息API响应400 Bad request

时间:2017-12-13 17:40:03

标签: java c# angularjs api powerbi-embedded

摘要:我正在研究在ISV应用程序中嵌入Power BI报告,当我尝试调用api端点来获取报告的详细信息时,它会响应400 Bad Request。我直接调用Power BI API而不使用SDK,因为microsoft尚未正式发布基于PowerBI SDK for Java的应用程序。另外,为了进行调试,我使用了另一个.net应用程序,该应用程序使用PowerBI SDK对相同的工作区进行相同的API调用,并且没有问题。

所有其他API端点,例如“列出所有工作区”,“获取工作区详细信息”,“列出工作区中的所有仪表板”,甚至“列出工作区中的所有报告”都可以按要求进行响应而不会出现问题,但此处列出的API端点:

Power BI get report embedding details using 'workspace_id' and 'report_id'

使用看似正确的凭据和请求来回复400 Bad请求。

连接应用程序上下文:

  1. ISV应用程序构建于Spring引导框架(Java)和Angular 2框架之上。
  2. 目前,我找不到基于Java的官方Microsoft Power BI SDK应用程序,因为我直接引用Power BI API reference doc
  3. 中的API
  4. ISV应用程序具有访问此处列出的API的所有必要权限: https://docs.microsoft.com/en-us/power-bi/developer/power-bi-permissions
  5. 应用程序能够为应用程序中使用的所有其他api端点生成令牌,生成经过身份验证的请求并从power bi获得响应。
  6. 发布和调试

    调试:

    1. 这是PowerBI .NET SDK提出的请求,它对get报告API起作用:
    2. 获取https://api.powerbi.com/v1.0/myorg/groups/d864b33b-74dd-4683-9cfd-91c712039147/reports/d618f04d-0b9d-483b-8f9c-cb1210d14595 HTTP / 1.1

      授权:承载身份验证令牌

      User-Agent:FxVersion / 4.7.2117.0 Windows_7_Enterprise / 6.1.7601 Microsoft.PowerBI.Api.V2.PowerBIClient / 2.0.2.17225

      主持人:api.powerbi.com

      1. 这是我的应用程序直接引用返回400的API端点的请求:
      2. 获取https://api.powerbi.com/v1.0/myorg/groups/d864b33b-74dd-4683-9cfd-91c712039147/reports/d618f04d-0b9d-483b-8f9c-cb1210d14595 HTTP / 1.1

        cache-control:no-cache

        Postman-Token:some-token

        授权:承载身份验证令牌

        User-Agent:PostmanRuntime / 7.1.1

        接受: /

        主持人:api.powerbi.com

1 个答案:

答案 0 :(得分:3)

这是由Accept HTTP标头引起的。 Microsoft的REST方法不支持它。 尝试:

curl -XGET 
"https://api.powerbi.com/v1.0/myorg/groups/{groupId}/reports/{reportId}" -i -H 
"Authorization: Bearer {token}" -H "Accept:"

-H "Accept:"将禁用此HTTP标头。 (默认情况下curl发送Accept: * / *