Jim*_*988 22 c# async-await dotnet-httpclient windows-phone-8
我有以下代码:
...
AuthenticationHeaderValue authHeaders = new AuthenticationHeaderValue("OAuth2", Contract.AccessToken);
string result = await PostRequest.AuthenticatedGetData(fullUrl, null, authHeaders);
return result;
...
public static async Task<string> AuthenticatedGetData(string url, FormUrlEncodedContent data, AuthenticationHeaderValue authValue)
{
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(authValue.Parameter);
HttpResponseMessage response = await client.PostAsync(new Uri(url), data);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
return responseBody;
}
Run Code Online (Sandbox Code Playgroud)
响应=等待部分只是继续循环,没有任何反应.我有什么想法我做错了吗?
问题是,我如何发送以下标题:
Authorization: OAuth2 ACCESS_TOKEN
Run Code Online (Sandbox Code Playgroud)
到外部网络api
Joh*_*ohn 56
我为此苦苦挣扎.我一直收到错误说"格式无效",因为我有一个自定义实现,并且Authorization标头针对某些标准进行了验证.然而,以这种方式添加标题有效:
var http = new HttpClient();
http.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "key=XXX");
Run Code Online (Sandbox Code Playgroud)
Ala*_*oud 21
这条线
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue(authValue.Parameter);
Run Code Online (Sandbox Code Playgroud)
将生成此标头值
Authorization: ACCESS_TOKEN
Run Code Online (Sandbox Code Playgroud)
ACCESS_TOKEN价值在哪里authValue.Parameter?您想要分配您传递的值以获取所需的标头
client.DefaultRequestHeaders.Authorization = authValue;
Run Code Online (Sandbox Code Playgroud)
会生产
Authorization: OAuth2 ACCESS_TOKEN
Run Code Online (Sandbox Code Playgroud)
使AuthenticationHeaderValue处理我的请求时遇到了类似的问题。我还使用了来自GitHub的JWT JsonWebToken。我能够从API中获得令牌,但是却在其他GET和POST中使用它很麻烦。
var jwt = JsonWebToken.Encode(token, APISECRET, JwtHashAlgorithm.HS256);
var tk = GetTokenFromApi(); // basically returns an encrypted string.
Run Code Online (Sandbox Code Playgroud)
手动使用WebRequest:效果很好。
request.ContentType = "application/json";
request.Method = "POST";
request.Headers.Set("Authorization", string.Format("Bearer {0}", tk));
Run Code Online (Sandbox Code Playgroud)
当我们切换到HttpClient并使用AuthenticationHeaderValue时,无法弄清楚如何正确设置它。查看请求字符串后,我看到它为我添加了“授权”。玩弄参数,这终于奏效了。
var authenticationHeaderValue = new AuthenticationHeaderValue("Bearer", tk);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67327 次 |
| 最近记录: |