ошибка 401 приложения для настольных компьютеров c # Как я могу отправить данные

#c# #.net #api #http-post

#c# #.net #API #http-post

Вопрос:

У меня нет проблем с получением токенов в разработанном мной настольном приложении. Но когда я пытаюсь отправить данные, я получаю ошибку 401.

 HttpWebRequest webRequest;
string requestParams = "";
webRequest = (HttpWebRequest)WebRequest.Create("url");
webRequest.Credentials = CredentialCache.DefaultCredentials;
webRequest.Method = "POST";
webRequest.ContentType = "application/json";
webRequest.Headers.Add("x-api-key", "112233");
webRequest.Headers.Add("AccessToken", token);
byte[] byteArray = Encoding.UTF8.GetBytes(req);
webRequest.ContentLength = byteArray.Length;
using (Stream requestStream = webRequest.GetRequestStream())
{
     requestStream.Write(byteArray, 0, byteArray.Length);
}
using (WebResponse response = webRequest.GetResponse()) 
{
    using (Stream responseStream = response.GetResponseStream())
        {
             StreamReader rdr = new StreamReader(responseStream, Encoding.UTF8);
             string Json = rdr.ReadToEnd();         
        }
}
 

Комментарии:

1. Вы ведь знаете, что означает код 401, не так ли? Не уверен, какую помощь вы ожидаете от нас.

2. да, я знаю. просто есть ошибки в виде кода?

3. 401 означает проблемы с аутентификацией. Возможно, вы используете неправильный токен, неправильный ключ api или неправильно передаете токен. Вам нужно выяснить, что нужно службе. Вы уверены, что для этого нужны как токен доступа, так и ключ api? Вы уверены, что вам нужно CredentialCache.DefaultCredentials ?

4. При тестировании с помощью postman проблем нет. да, ему нужен токен и ключ API, я не уверен в CredentialCache. DefaultCredentials

5. Попробуйте удалить CredentialCache.DefaultCredentials . Это может помешать аутентификации, поскольку оно устанавливает учетные данные на учетные данные, с которыми запущено приложение.

Ответ №1:

Проблема заключается в настройке токена. Во-первых, вы должны быть уверены, что ваш сервер хочет использовать в качестве токена. Вы можете попробовать это для Bearer токена.

     webRequest.Headers.Add("Authorization", "Bearer "   token);
 

Ответ №2:

Чтобы ваша программа работала, вы должны указать фактический URL-адрес, а не только строку "url" , в

WebRequest = (HttpWebRequest)WebRequest.Создать («url»);

Комментарии:

1. У меня есть реальный URL-адрес.

Ответ №3:

Публикация в api с помощью приложения c # Windows form. oauth2.0

             using (var client1 = new HttpClient ())
            {
                client1.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                client1.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Token());
                client1.DefaultRequestHeaders.Add("x-api-key", "xxxx");

                var builder = new UriBuilder(new Uri("you - url"));

                HttpRequestMessage request1 = new HttpRequestMessage(HttpMethod.Post, builder.Uri);

                request1.Content = new StringContent("{"values":"   JsonConvert.SerializeObject("you -data")  "}", Encoding.UTF8, "application/json");
               
                HttpResponseMessage response = await client1.SendAsync(request1);

            };
 

Комментарии:

1. Пожалуйста, объясните, что вы пытаетесь ответить на заданный вопрос. Объяснение не менее важно с опубликованным кодом.

2.Публикация в api с помощью приложения c # Windows form. oauth2.0