Это относится к работе с сетью, без отправки и получения запросов у нас ничего через интернет работать не может.
Есть уже готовые классы в стандартных библиотеках .NET, но всё равно писать приходится много. Рассмотрим на примере как делать Get запрос (получение данных по url):
Есть уже готовые классы в стандартных библиотеках .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 для запроса должен быть другой. Но запрос будет отправлен, всё это работает.
0 коммент.:
Отправить комментарий