Поскольку спрашивают, решил на своём примере показать, как программно принимать и отправлять данные на web-сервер.
Для начала создадим класс, отправляющий вэб-запросы:
class HttpUtility
{
public HttpWebResponse GetPage(string url, CookieCollection cookies)
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Accept = "image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, */*";
request.Headers.Add("Accept-Language", "ru-RU");
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)";
request.AllowAutoRedirect = false;
request.CookieContainer = new CookieContainer();
if (cookies != null)
{
request.CookieContainer.Add(cookies);
}
return (HttpWebResponse)request.GetResponse();
}
public HttpWebResponse PostPage(string url, byte[] postData, CookieCollection cookies)
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Method = "POST";
request.Accept = "image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, */*";
request.Headers.Add("Accept-Language", "ru-RU");
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)";
request.ContentType = "application/x-www-form-urlencoded";
request.AllowAutoRedirect = false;
request.ContentLength = postData.Length;
request.GetRequestStream().Write(postData, 0, postData.Length);
request.CookieContainer = new CookieContainer();
if (cookies != null)
{
request.CookieContainer.Add(cookies);
}
return (HttpWebResponse)request.GetResponse();
}
public HttpWebResponse PostPage(string url, string postString, CookieCollection cookies)
{
byte[] byteArr = System.Text.Encoding.GetEncoding(1251).GetBytes(postString);
return PostPage(url, byteArr, cookies);
}
public HttpWebResponse PostPage(string url, string postString)
{
return PostPage(url, postString, null);
}
public HttpWebResponse GetPage(string url)
{
return GetPage(url, null);
}
public string GetResponseContent(HttpWebResponse response)
{
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(1251));
string result = reader.ReadToEnd();
reader.Close();
return result;
}
} Также потребуется форма с двумя текстовыми полями tbMail и tbPassword для ввода e-mail адреса и пароля соответственно, текстовым полем logBox со свойством Multiline равным True и кнопкой.
В обработчике нажатия на кнопку пишем следующее:
logBox.Clear(); VKLogin(tbMail.Text, tbPassword.Text)
Также в классе формы надо будет написать 2 вспомогательных метода:
/// Метод добавляет запись в лог и перерисовывает элемент управления
///
///Текст, который необходимо добавить private void logAppend(string text)
{
logBox.AppendText(text + "\n");
logBox.Refresh();
}
///
/// Метод пытается загрузить страницу методом POST
///
///HTTP адрес нужной страницы ///Строка, содержащая отправляемые данные /// В случае ошибки возвращает null и пишет в лог
private HttpWebResponse tryPostPage(string url, string postString)
{
HttpUtility http = new HttpUtility();
HttpWebResponse response = null;
try
{
response = http.PostPage(url, postString);
}
catch
{
logAppend("Сбой соединения.");
return null;
}
return response;
} И, наконец, функция, выполняющая авторизацию В Контакте:
private void VKLogin(string mail, string password)
{
HttpUtility http = new HttpUtility();
// Формируем данные POST-запроса
StringBuilder query = new StringBuilder();
query.Append("email=" + mail);
query.Append("&pass=" + password);
query.Append("&expire=&vk=");
// Отправляем запрос и получаем ответ
logAppend("Loading https://login.vk.com/?act=login...");
HttpWebResponse response = tryPostPage("https://login.vk.com/?act=login", query.ToString());
// Прерываем выполнение функции, если отправка запроса не удалась
if (response == null) return;
// Проверяем, не перенаправили ли нас куда-то не туда?)
if (response.StatusCode != HttpStatusCode.OK)
{
logAppend("Такой почтовый адрес не зарегистрирован, либо пароль неверный.");
return;
}
// Выводим ID пользователя
string VKid = response.Cookies["l"].Value;
logAppend("ID: " + VKid);
// Находим в тексте возвращённой страницы строку, необходимую для дальнейшей авторизации
string s_id = "";
try
{
string result_s = http.GetResponseContent(response);
string pattern = "";
pagetext = pagetext.Substring(pagetext.IndexOf(texttofind) + texttofind.Length);
pagetext = pagetext.Substring(0, pagetext.IndexOf('<'));
string username = pagetext.Substring(pagetext.IndexOf('|') + 1).Trim();
logAppend("%USERNAME%: " + username);
}
Я уже 3 года торгую фьючерсами на Bybit и приглашаю тебя присоединиться и получить до $30 000 бонусами плюс скидки на комиссии:
Зарегистрироваться на Bybit
Чем больше депозит – тем больше бонусов. Также моим рефералам доступны торговые боты для трейдинга по самым выгодным тарифам. 







