С # вызов Webapi с учетными данными для аутентификации не был предоставлен, но почтальон работает нормально

using (WebClient wc = new WebClient())
{
    wc.Headers.Add("Content-Type", "application/json");                
    wc.Headers.Add("Authorization", "Token 12345678");                
    wc.Encoding = Encoding.UTF8;
    var jsonRespStr = wc.DownloadString("https://example.com/api/xxx");
}

Я запускаю приведенный выше сценарий C # и получаю следующий результат.
{detail: Учетные данные для аутентификации не были предоставлены.}

Однако я использую тот же вызов токена через PostMan, он работает


person onefourone anakin    schedule 20.11.2020    source источник
comment
наконец, я нашел ответ в этом посте stackoverflow.com/questions/28564961/ проблема возникла из-за перенаправления   -  person onefourone anakin    schedule 24.11.2020


Ответы (1)


Если это токен на предъявителя, то подойдут следующие строки.

        HttpClient _httpClient;
        string tokenString = "fa114107311259f5f33e70a5d85derestve***dse--";
        _httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", tokenString);
        string requestUri = "https://example.com/api/xxx";
        HttpResponseMessage httpResponse = await httpClient.GetAsync(requestUri);

Вы можете попробовать GetStringAsync вместо GetAsync.

person JEEVA RAJA PAUL    schedule 20.11.2020