Показаны сообщения с ярлыком GET/POST. Показать все сообщения
Показаны сообщения с ярлыком GET/POST. Показать все сообщения

суббота, 1 сентября 2012 г.

[Видеоурок] C# Работа с WebBrowser

Работа с встроенным окном браузера очень сильно упрощает во многих случаях процесс отправки POST запросов, если со стороны сервера слишком запутана система обмена cookies. В Видеоуроке показано как делать авторизацию в twitter по дпнной технологии, точно также можно сделать и для контакта, и для других соц сетей.

Также показано как исполнять Javascript в данном виджете, осуществлять просмотр html загруженной страницы, стирать сохранённые cookies.

Лично мне очень часто приходилось делать авторизацию таким образом, поэтому по моему мнению этот видеоурок вполне достоин иметь место это этом блоге.

понедельник, 2 июля 2012 г.

C# Реализация Get/Post запросов

Это относится к работе с сетью, без отправки и получения запросов у нас ничего через интернет работать не может.

Есть уже готовые классы в стандартных библиотеках .NET, но всё равно писать приходится много. Рассмотрим на примере как делать Get запрос (получение данных по url):

public string GET_http(string url){
            System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
            System.Net.WebRequest reqGET = System.Net.WebRequest.Create(url);
            System.Net.WebResponse resp = reqGET.GetResponse();
            System.IO.Stream stream = resp.GetResponseStream();
            System.IO.StreamReader sr = new System.IO.StreamReader(stream);
            string html = sr.ReadToEnd();
            return html;
        }

Это была простая функция, которая требует для вызова url и в результате работы отдаёт нам html загруженной страницы.

Рассмотрим POST запрос. Для начала следует сказать, что этот запрос подразумевает отправку каких либо данных сначала, а потом только получение ответа. Самым частым случаем является авторизация на сайтах через http и дальнейшая работа в этом направлении.

Пример функции, которая отправляет POST запрос (отправка данных):
public string http_post(string url, string data)
        {
            var cookies = new CookieContainer();
            ServicePointManager.Expect100Continue = false;

            var request = (HttpWebRequest)WebRequest.Create(url);
            request.CookieContainer = cookies;
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            using (var requestStream = request.GetRequestStream())
            using (var writer = new StreamWriter(requestStream))
            {
                writer.Write(data);
            }

            using (var responseStream = request.GetResponse().GetResponseStream())
            using (var reader = new StreamReader(responseStream))
            {
                var result = reader.ReadToEnd();
                return result;
            }
        }

В нашем случае переменная data это то, что передаётся в post запросе. Точно также как и с get, мы получаем ответ в виде html страницы. 
Чтобы лучше разобраться что это такое, покажу на примере как правильно делать вызов данной функции:
private void button1_Click(object sender, EventArgs e)
        {         
            http_post("http://m.vk.com/","email=goga@mail.ru&pass=123");  
        }

Та функция, которую я показал, не делает авторизацию на сайт контакта, результат будет отрицательным, так как для контакта совсем иная история и url для запроса должен быть другой. Но запрос будет отправлен, всё это работает.

TROCKII БЛОГ Copyright © 2012 | Template created by Lev Trockii |