https://api.powerbi.com/v1.0/myorg/datasets
通过将GET请求发送到上述网址,我收到401错误。
添加了Content-Type:application / json, 授权:不记名xxxxxxxxxxxxxxxxxxxxxxx
如何解决此问题?
我在Power Bi报表服务器中缺少任何设置吗,我将Api Access视为“-”吗?
答案 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);
}
}