未经授权的HTTP请求.net



我正在尝试使用承载授权进行HTTP请求。我有一个令牌,令牌是有效的。我尝试了三种不同的方式:App,请求必须在POSTMAN中实现,控制台应用程序与POSTMAN (c# - RestSharp)从相同的POSTMAN调用生成的代码:

App POST方法:

public async Task<TResponse> Post<TRequest, TResponse>(string requestUri, TRequest data)
{
LogInit(requestUri, HttpMethod.Post, data);
using (var request = new HttpRequestMessage(HttpMethod.Post, requestUri))
{
var token = await GetToken(_httpClient);
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token.AccessToken);
request.Content = new StringContent(JsonConvert.SerializeObject(data), Encoding.UTF8, "application/json");
using (var response = await _httpClient.SendAsync(request))
{
if (!response.IsSuccessStatusCode)
{
throw await HandleErrorResponse(response);
}
var responseObj = await response.Content.ReadAsJsonAsync<TResponse>();
return responseObj;
}
}
}

Console POST方法:

static void Main(string[] args)
{
var client = new RestClient("http://***");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer xxx");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Cookie", "ARRAffinity=xxx");
var body = @"{
" + "n" +
@"    ""amisPersonId"": ***,
" + "n" +
@"    ""name"": ""***"",
" + "n" +
@"    ""surname"": ""***"",
" + "n" +
@"    ""personalCode"": ""***"",
" + "n" +
@"    ""email"": ""***"",
" + "n" +
@"    ""phoneNumber"": ""***""
" + "n" +
@"}";
request.AddParameter("application/json", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
}

用调试器跟踪请求:

应用程序请求

控制台应用程序请求

邮差请求

邮差得到200/400响应,应用程序和控制台应用程序得到401(未经授权)。两个应用程序都是。net CORE应用程序。

假设您有正确的标记。AccessToken,尝试替换

request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token.AccessToken);

_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.AccessToken);

最新更新