java - Power BI 嵌入式 : Get Report details API responds with 400 Bad request

标签 java c# angularjs api powerbi-embedded

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

所有其他 API 端点(例如“列出所有工作区”、“获取工作区详细信息”、“列出工作区中的所有仪表板”,甚至“列出工作区中的所有报告”)都会按请求响应,不会出现任何问题,但此处列出的 API 端点:

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

使用看似正确的凭据和请求响应 400 Bad request。

连接应用程序上下文:

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

问题和调试

调试:

  1. 这是 PowerBI .NET SDK 发出的请求,适用于获取报告 API:

获取https://api.powerbi.com/v1.0/myorg/groups/d864b33b-74dd-4683-9cfd-91c712039147/reports/d618f04d-0b9d-483b-8f9c-cb1210d14595 HTTP/1.1

授权:不记名身份验证 token

用户代理:FxVersion/4.7.2117.0 Windows_7_Enterprise/6.1.7601 Microsoft.PowerBI.Api.V2.PowerBIClient/2.0.2.17225

主机:api.powerbi.com

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

    缓存控制:无缓存

    postman token :一些 token

    授权:不记名身份验证 token

    用户代理:PostmanRuntime/7.1.1

    接受:/

    主机:api.powerbi.com

    最佳答案

    这是由于 Accept HTTP header 造成的。 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 header 。 (默认情况下curl发送接受:*/*)

    关于java - Power BI 嵌入式 : Get Report details API responds with 400 Bad request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47799183/

    相关文章:

    javascript - 覆盖 Javascript 文件 Maven

    c# - 有没有一种简单的方法可以在 WPF 中创建一个 "tab-sensitive"按钮?

    c# - 在方法中获取 session 变量

    javascript - "angular is not defined"是什么原因

    java - 将edittext和textview的值相加并在 TextView 中显示总计

    java - 如何使用 AssertThat 检查列表中对象的属性值?

    c# - .NET Core 2 中的 ReadAsMultipartAsync 等价物

    javascript - 简单的 orderBy 过滤器在 AngularJs 中不起作用

    javascript - ng-show 不适用于简单的 Div

    java - 将 Graphics2D 嵌入到 itext 中,无需绝对定位