在power bi GET请求中获取响应401

时间:2018-10-22 09:37:33

标签: powerbi

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

通过将GET请求发送到上述网址,我收到401错误。

添加了Content-Type:application / json, 授权:不记名xxxxxxxxxxxxxxxxxxxxxxx

如何解决此问题?

我在Power Bi报表服务器中缺少任何设置吗,我将Api Access视为“-”吗?

1 个答案:

答案 0 :(得分:0)

您正在使用“ power bi报表服务器”,但是get数据集URI(https://api.powerbi.com/v1.0/myorg/datasets)是Power BI Service的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);
    }

}