首页 > 解决方案 > 在 power bi GET 请求中获得响应 401

问题描述

https://api.powerbi.com/v1.0/myorg/datasets

通过向上面的 url 发送 GET 请求,我收到 401 错误。

添加Content-Type:application/json, Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxx

如何解决这个问题?

我是否缺少 power bi 报告服务器中的任何设置,我将 Api Access 视为“--”是原因吗?

标签: powerbi

解决方案


您正在讨论“power bi 报表服务器”,但获取数据集 URI ( https://api.powerbi.com/v1.0/myorg/datasets ) 是 Power BI 服务的 REST API。如果要将请求发送到本地 Power BI 报表服务器,则应将请求发送到您的本地主机。

否则,请检查您的应用程序权限 - 它是否有权读取(读取所有数据集)或写入(读取和写入所有数据集)数据集?您可以在https://jwt.io解码您的访问令牌并检查 scp 是否包含“Dataset.Read.All”或“Dataset.ReadWrite.All”。

更新:尝试通过阅读响应的内容来获取有关错误的更多详细信息。为此,请使用如下代码:

private void GetDatasets(string accessToken)
{
    string powerBIDatasetsApiUrl = "https://api.powerbi.com/v1.0/myorg/datasets";

    var request = WebRequest.Create(powerBIDatasetsApiUrl) as HttpWebRequest;
    request.KeepAlive = true;
    request.Method = "GET";
    request.ContentLength = 0;
    request.ContentType = "application/json";
    request.Headers.Add("Authorization", $"Bearer {accessToken}");
    try
    {
        using (HttpWebResponse httpResponse = request.GetResponse() as System.Net.HttpWebResponse)
        {
            using (StreamReader reader = new System.IO.StreamReader(httpResponse.GetResponseStream()))
            {
                string responseContent = reader.ReadToEnd();
                MessageBox.Show(responseContent, "Get Datasets");
            }
        }
    }
    catch (WebException ex)
    {
        MessageBox.Show(ex.Message);
        if (ex.Response != null)
        {
            using (var errorResponse = (HttpWebResponse)ex.Response)
            {
                using (var reader = new StreamReader(errorResponse.GetResponseStream()))
                {
                    var errorString = reader.ReadToEnd();
                    MessageBox.Show(errorString);
                }
            }
        }
        else
            MessageBox.Show(ex.Message);
    }

}


推荐阅读