Не могу авторизоваться с моим API, который имеет аутентификацию JWT. Я работаю с Xamarin - PullRequest
0 голосов
/ 04 сентября 2018

Ну, я новичок в Xamarin, и я разрабатываю и приложение, аутентификация основана на JWT. Я использую HttpClient и устанавливаю AuthenticationHeaders, но он всегда возвращает Unauthorized, когда я пробую его на Postman. Это работает, но я не могу заставить его работать в моем приложении.

Вот как я пытаюсь это сделать:

var client = new HttpClient(new HttpClientHandler());
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("JWT", accessToken);
client.BaseAddress = new Uri(urlBase);
var url = string.Format("{0}{1}", servicePrefix, controller);
var response = await client.GetAsync(url);

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Если вы используете get, это может быть руководство

var uri = new Uri(string.Format($"{<yourURLHere>}", string.Empty));
client.DefaultRequestHeaders.Add("Authorization", "JWT " + accessToken);
var httpResponse = await client.GetAsync(uri);
var responseContent = await httpResponse.Content.ReadAsStringAsync();

затем десериализовать ваш строковый ответ Примечание: это пример - отредактируйте вашу модель (вы можете использовать PostMan, чтобы получить формат ответа в JSON и смоделировать его в C #)

var UserDetailResponse = JsonConvert.DeserializeObject<UserDetail>(responseContent);
return UserDetailResponse;
0 голосов
/ 04 сентября 2018

Попробуйте что-то вроде этого

using (var client = new HttpClient())
        {
            var uri = new Uri(string.Format($"{<yourURLString>}", string.Empty));
            var jsonTransport = "";
            var jsonPayload = new StringContent(jsonTransport, Encoding.UTF8, "application/json");
            //client.DefaultRequestHeaders.Add("Content-type", "application/json");
            client.DefaultRequestHeaders.Add("Authorization", "JWT " + accessToken);
            var response = await client.PostAsync(uri, jsonPayload);
            string responseContent = await response.Content.ReadAsStringAsync();
        }

затем десериализуйте responseContent для вашего объекта с помощью JsonConvert.DeserializeObject Примечание: ниже приведены примеры кода, редактируйте свои собственные объекты

SubscriptionResponse profileResponse = JsonConvert.DeserializeObject<SubscriptionResponse>(responseContent);

тогда, если ваш метод что-то возвращает, используйте оператор return. Примерно так

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