powerbi - 在 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 视为“--”是原因吗?
解决方案
您正在讨论“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);
}
}