C # HttpClient Post с данными авторизации и JSON - 401 Несанкционированный - PullRequest
0 голосов
/ 11 декабря 2019

пытается отправить запрос по почте (работает нормально в почтальоне), но продолжает получать 401 Несанкционированное исключение в C #. Вот мой код:

var httpClient = new HttpClient();
var creds = string.Format("{0}:{1}", "username", "password");
var basicAuth = string.Format("Basic {0}", Convert.ToBase64String(Encoding.UTF8.GetBytes(creds)));
httpClient.DefaultRequestHeaders.Add("Authorization", basicAuth);

var requestMessage = new HttpRequestMessage(HttpMethod.Post, url);
requestMessage.Content = new StringContent(postData, Encoding.UTF8, "application/json");
requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Basic", "encodedValue==");

var post = httpClient.SendAsync(requestMessage);
post.Wait();

При использовании HttpWebRequest происходит то же самое:

var webReq = (HttpWebRequest)WebRequest.Create(url);
webReq.Headers.Add("Authorization","Basic encodedValue==");
webReq.Method = "POST";
webReq.ContentType = "application/json";

try
{
    using (var streamWriter = new StreamWriter(webReq.GetRequestStream()))
    {
        streamWriter.Write(json);
        streamWriter.Flush();
        streamWriter.Close();
    }

    var httpResponse = (HttpWebResponse)webReq.GetResponse();
    using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
    {
        response = streamReader.ReadToEnd();
    }
}

Есть ли у кого-нибудь идеи, что я могу попробовать? PS (encodedValue == правильно закодировано)

1 Ответ

2 голосов
/ 11 декабря 2019

HttpClient теряет свои заголовки при перенаправлениях.

Поэтому убедитесь, что вы используете правильный адрес API. Если ваш API не разрешает небезопасные соединения, но вы используете "http://your -api-address.xy / " вместо "https://your -api-address.xy / "он вернет перенаправление, и ваш клиент потеряет заголовки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...