C# 调用API函数时出错;用户/获取“活期”账户:必须提供HTTP头“;“授权”;或URL参数";“授权”;
我在Dropbox API上开发,使用C#universal应用程序C# 调用API函数时出错;用户/获取“活期”账户:必须提供HTTP头“;“授权”;或URL参数";“授权”;,c#,win-universal-app,dropbox-api,C#,Win Universal App,Dropbox Api,我在Dropbox API上开发,使用C#universal应用程序 public async Task<string> Httpclient(string link) { HttpClient client = new HttpClient(); HttpResponseMessage response= await client.GetAsync(link); return await response.Content.ReadAsStringAsync(
public async Task<string> Httpclient(string link) {
HttpClient client = new HttpClient();
HttpResponseMessage response= await client.GetAsync(link);
return await response.Content.ReadAsStringAsync();
}
public async Task<Model.Get_Current_Account.RootObject> get_current_account(string _accessToken) {
var query = await mainViewModel.Httpclient("https://api.dropboxapi.com/2/users/get_current_account?access_token="+_accessToken);
if (query != null) {
var get_data = JsonConvert.DeserializeObject<Model.Get_Current_Account.RootObject>(query);
return get_data;
} else
return null;
}
公共异步任务Httpclient(字符串链接){
HttpClient=新的HttpClient();
HttpResponseMessage response=wait client.GetAsync(link);
return wait response.Content.ReadAsStringAsync();
}
公共异步任务获取当前帐户(字符串\u accessToken){
var query=await mainViewModel.Httpclient(“https://api.dropboxapi.com/2/users/get_current_account?access_token=“+_accessToken);
if(查询!=null){
var get_data=JsonConvert.DeserializeObject(查询);
返回get_数据;
}否则
返回null;
}
var查询
产生错误:
调用API函数“users/get_current_account”时出错:必须提供HTTP头“Authorization”或URL参数“Authorization”
阅读dropbox表明您应该传递一个授权头(与您收到的错误相匹配)
Authorization:Bearer演示如何将头添加到HttpClient而不是使用HttpClient
,尝试使用HttpWebRequest
并设置API正在查找的HTTP头:
public async Task<string> Httpclient(string link, string token)
{
try
{
var request = (HttpWebRequest)WebRequest.Create(link);
request.Accept = "application/json";
request.Headers.Add(
HttpRequestHeader.Authorization,
string.concat("Bearer ", token));
request.Method = "get";
var response = await request.GetResponseAsync();
var stream = response.GetResponseStream();
if (stream != null)
{
using (var reader = new StreamReader(stream))
{
return reader.ReadToEnd();
}
}
else return string.Empty;
}
catch { return string.Empty; }
}
公共异步任务Httpclient(字符串链接、字符串令牌)
{
尝试
{
var request=(HttpWebRequest)WebRequest.Create(link);
request.Accept=“application/json”;
request.Headers.Add(
HttpRequestHeader.Authorization,
string.concat(“承载者”,令牌));
request.Method=“get”;
var response=wait request.GetResponseAsync();
var stream=response.GetResponseStream();
if(流!=null)
{
使用(变量读取器=新的流读取器(流))
{
返回reader.ReadToEnd();
}
}
否则返回字符串。空;
}
catch{return string.Empty;}
}
这会让你朝着正确的方向前进
您需要提供令牌
数据才能成功进行授权。谢谢,但需要一个“方法”POST。(method=“get”)这是正确的。根据您发布的错误消息,另一个选项是使用“authorization”URL参数,而不是代码中使用的“access\u token”URL参数。此外,该方法应该是POST,而不是GET,但这是另一个问题。
public async Task<string> Httpclient(string link, string token)
{
try
{
var request = (HttpWebRequest)WebRequest.Create(link);
request.Accept = "application/json";
request.Headers.Add(
HttpRequestHeader.Authorization,
string.concat("Bearer ", token));
request.Method = "get";
var response = await request.GetResponseAsync();
var stream = response.GetResponseStream();
if (stream != null)
{
using (var reader = new StreamReader(stream))
{
return reader.ReadToEnd();
}
}
else return string.Empty;
}
catch { return string.Empty; }
}