Advertisement
Guest User

Untitled

a guest
Mar 10th, 2016
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.47 KB | None | 0 0
  1. class Program
  2. {
  3. //Вначале устанавливаем две глобальные переменные для адреса сайта и токена:
  4. private const string APP_PATH = "http://localhost:5965";
  5. //private const string APP_PATH = "http://localhost:7331";
  6. private static string token;
  7.  
  8. static void Main(string[] args)
  9. {
  10. //После ввода emailа и пароля вывызвается метод Register(), который отправляет регистрационные данные по маршруту /api/Account/Register
  11.  
  12. //Console.WriteLine("Введите логин:");
  13. //string userName = Console.ReadLine();
  14.  
  15. //Console.WriteLine("Введите пароль:");
  16. //string password = Console.ReadLine();
  17. ////
  18. string userName = "test1@a.a";
  19. //string password = "Aa0000#";
  20. string password = "Aa0000#";
  21. ////
  22. //var registerResult = Register(userName, password);
  23.  
  24. //Console.WriteLine("Статусный код регистрации: {0}", registerResult);
  25. //Зарегистрировавшись, мы можем получить токен с помощью метода GetTokenDictionary(). Так как возвращаемый сервером объект представляет набор ключей и значений в формате json, то его можно преобразовать к словарь Dictionary, а из него по ключу получить сам токен:
  26.  
  27. Dictionary<string, string> tokenDictionary = GetTokenDictionary(userName, password);
  28. token = tokenDictionary["access_token"];
  29.  
  30. Console.WriteLine();
  31. Console.WriteLine("Access Token:");
  32. Console.WriteLine(token);
  33.  
  34. Console.WriteLine();
  35. string userInfo = GetUserInfo(token);
  36. Console.WriteLine("Пользователь:");
  37. Console.WriteLine(userInfo);
  38.  
  39. Console.WriteLine();
  40. string values = GetValues(token);
  41. Console.WriteLine("Values:");
  42. Console.WriteLine(values);
  43.  
  44. Console.Read();
  45. }
  46.  
  47. // регистрация
  48. static string Register(string email, string password)
  49. {
  50. var registerModel = new
  51. {
  52. Email = email,
  53. Password = password,
  54. ConfirmPassword = password
  55. };
  56. using (var client = new HttpClient())
  57. {
  58. var response = client.PostAsJsonAsync(APP_PATH + "/api/Account/Register", registerModel).Result;
  59. return response.StatusCode.ToString();
  60. }
  61. }
  62. // получение токена
  63. //Получив токен, уже можно отправлять запросы к любым защищенным ресурсам.Например, далее отправляется запрос по маршруту /api/Account/UserInfo для получения данных о пользователе.И также отправляется запрос к методу Get контроллера ValuesController.
  64. static Dictionary<string, string> GetTokenDictionary(string userName, string password)
  65. {
  66. var pairs = new List<KeyValuePair<string, string>>
  67. {
  68. new KeyValuePair<string, string>( "grant_type", "password" ),
  69. new KeyValuePair<string, string>( "username", userName ),
  70. new KeyValuePair<string, string> ( "Password", password )
  71. };
  72. var content = new FormUrlEncodedContent(pairs);
  73.  
  74. using (var client = new HttpClient())
  75. {
  76. var response =
  77. client.PostAsync(APP_PATH + "/Token", content).Result;
  78. var result = response.Content.ReadAsStringAsync().Result;
  79. // Десериализация полученного JSON-объекта
  80. Dictionary<string, string> tokenDictionary =
  81. JsonConvert.DeserializeObject<Dictionary<string, string>>(result);
  82. return tokenDictionary;
  83. }
  84. }
  85.  
  86. // создаем http-клиента с токеном
  87. //Для отправки запросов к серверу во всех методах используется класс HttpClient.
  88. //Для упрощения запросов с токеном создан вспомогательный метод CreateClient(), который устанавливает токен в заголовках авторизации и возвращает объект HttpClient.
  89. static HttpClient CreateClient(string accessToken = "")
  90. {
  91. var client = new HttpClient();
  92. if (!string.IsNullOrWhiteSpace(accessToken))
  93. {
  94. client.DefaultRequestHeaders.Authorization =
  95. new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
  96. }
  97. return client;
  98. }
  99.  
  100. // получаем информацию о клиенте
  101. static string GetUserInfo(string token)
  102. {
  103. using (var client = CreateClient(token))
  104. {
  105. var response = client.GetAsync(APP_PATH + "/api/Account/UserInfo").Result;
  106. return response.Content.ReadAsStringAsync().Result;
  107. }
  108. }
  109.  
  110. // обращаемся по маршруту api/values
  111. static string GetValues(string token)
  112. {
  113. using (var client = CreateClient(token))
  114. {
  115. var response = client.GetAsync(APP_PATH + "/api/values").Result;
  116. return response.Content.ReadAsStringAsync().Result;
  117. }
  118. }
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement