#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