Я встроил http-сервер в настольное приложение, которое будет использоваться для перехвата ответа от перенаправления OAuth2. Следующий метод забирает сообщение и преобразует его в строку:
private void ReceiveCallback(IAsyncResult ar)
{
var client = (Socket)ar.AsyncState;
var size = client.EndReceive(ar);
var received = new byte[size];
Array.Copy(Buffer, received, size);
var data = Encoding.ASCII.GetString(received);
OnCallback(data);
}
Метод OnCallback
- это событие, которое передает данные в другой класс. При успешном вызове аутентификации содержимое данных выглядит следующим образом:
GET /? Code = CODE_I_NEED_APPEARS_HERE
HTTP / 1.1
Хост: localhost: 8321
Подключение: keep-alive
Cache-Control: max-age = 0
Необязательные обновления: запросы: 1
Пользователь-агент: Mozilla / 5.0 (Windows NT 6.1; Win64; x64) AppleWebKit / 537,36 (KHTML, как Gecko) Chrome / 72.0.3626.121 Safari / 537.36
Принять: текст / html, приложение / xhtml + xml, приложение / xml; q = 0,9, изображение / webp, изображение / apng, / ; q = 0,8
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US, en; q = 0,9
Как извлечь параметр кода из приведенной выше строки (значение CODE_I_NEED_APPEARS_HERE - я удалил реальный код, поскольку он является токеном аутентификации)? Я пытался создать ответное сообщение http, чтобы разбить строку на свойства, но не могу найти способ получить значение параметра GET:
var response = new HttpResponseMessage();
response.Content = new StringContent(message);