PDA

Просмотр полной версии : [Руководство] Упрошенная отправка пакетов и парсинг


xFroLx
24.01.2012, 17:16
Для новичков в программировании, ток прошу не засоряйте форум беспонтовыми прогами)))

Отправка запросов ПОСТ

public string send_POST(string url, string post)
{
string Response_POST = "", StrNewValue;
try
{
[Ссылки могут видеть только зарегистрированные и активированные пользователи] req = ([Ссылки могут видеть только зарегистрированные и активированные пользователи])WebRequest.Create(url);
req.Method = "POST";
if (checkBox1.Checked)
{
req.Proxy = new WebProxy("127.0.0.1", 8888);
}
req.ContentType = "application/x-[Ссылки могут видеть только зарегистрированные и активированные пользователи]";
StrNewValue = post;
req.ContentLength = StrNewValue.Length;
StreamWriter Soup = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
Soup.Write(StrNewValue);
Soup.Close();
StreamReader stin3 = new StreamReader(req.GetResponse().GetResponseStream() );
Response_POST = stin3.ReadToEnd();
stin3.Close();
}
catch { }
return Response_POST;
}

ГЕТ

public string send_GET(string url)
{
string str5 = "";
try
{
[Ссылки могут видеть только зарегистрированные и активированные пользователи] request5 = ([Ссылки могут видеть только зарегистрированные и активированные пользователи])WebRequest.Create(url);
if (checkBox1.Checked)
{
request5.Proxy = new WebProxy("127.0.0.1", 8888);
}
[Ссылки могут видеть только зарегистрированные и активированные пользователи] response1 = ([Ссылки могут видеть только зарегистрированные и активированные пользователи])request5.GetResponse();
str5 = new StreamReader(response1.GetResponseStream(), Encoding.UTF8).ReadToEnd();
}
catch { }
return str5;
}

Парсер

public string parse(string all, string l, string r, string razd)
{
string res = "";
Regex g5 = new Regex(l + "(.*?)" + r);


if (g5.IsMatch(all))
{
MatchCollection matches = g5.Matches(all);

foreach (Match y in matches) { res += y.Groups[1].ToString() + razd; }
}
return res;
}

Пример!!!

Создаем новый проект с кнопкой и чекбоксом

[Ссылки могут видеть только зарегистрированные и активированные пользователи] ([Ссылки могут видеть только зарегистрированные и активированные пользователи])

Жмем два раза на кнопку

Пишем там это

string otvet = send_POST("[Ссылки могут видеть только зарегистрированные и активированные пользователи]", "key=091f3644b5dcf9bc0e3b1ead2f1d12c1&sig=6d7c635916fc0df00cafaa95e7ba7e9e&method=getInfo&user=63435282");
string avtoritet = parse(otvet, "<rating>", "</rating>", "");
MessageBox.Show("Авторитет: "+avtoritet);


[Ссылки могут видеть только зарегистрированные и активированные пользователи] ([Ссылки могут видеть только зарегистрированные и активированные пользователи])



Код целиком

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Web;
using System.Threading;
using System.Text.RegularExpressions;
namespace Threads
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
string otvet = send_POST("[Ссылки могут видеть только зарегистрированные и активированные пользователи]", "key=091f3644b5dcf9bc0e3b1ead2f1d12c1&sig=6d7c635916fc0df00cafaa95e7ba7e9e&method=getInfo&user=63435282");
string avtoritet = parse(otvet, "<rating>", "</rating>", "");
MessageBox.Show("Авторитет: "+avtoritet);
}

public string send_POST(string url, string post)
{
string Response_POST = "", StrNewValue;
try
{
[Ссылки могут видеть только зарегистрированные и активированные пользователи] req = ([Ссылки могут видеть только зарегистрированные и активированные пользователи])WebRequest.Create(url);
req.Method = "POST";
if (checkBox1.Checked)
{
req.Proxy = new WebProxy("127.0.0.1", 8888);
}
req.ContentType = "application/x-[Ссылки могут видеть только зарегистрированные и активированные пользователи]";
StrNewValue = post;
req.ContentLength = StrNewValue.Length;
StreamWriter Soup = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
Soup.Write(StrNewValue);
Soup.Close();
StreamReader stin3 = new StreamReader(req.GetResponse().GetResponseStream() );
Response_POST = stin3.ReadToEnd();
stin3.Close();
}
catch { }
return Response_POST;
}

public string send_GET(string url)
{
string str5 = "";
try
{
[Ссылки могут видеть только зарегистрированные и активированные пользователи] request5 = ([Ссылки могут видеть только зарегистрированные и активированные пользователи])WebRequest.Create(url);
if (checkBox1.Checked)
{
request5.Proxy = new WebProxy("127.0.0.1", 8888);
}
[Ссылки могут видеть только зарегистрированные и активированные пользователи] response1 = ([Ссылки могут видеть только зарегистрированные и активированные пользователи])request5.GetResponse();
str5 = new StreamReader(response1.GetResponseStream(), Encoding.UTF8).ReadToEnd();
}
catch { }
return str5;
}

public string parse(string all, string l, string r, string razd)
{
string res = "";
Regex g5 = new Regex(l + "(.*?)" + r);


if (g5.IsMatch(all))
{
MatchCollection matches = g5.Matches(all);

foreach (Match y in matches) { res += y.Groups[1].ToString() + razd; }
}
return res;
}
}
}

Sleepy_Master
26.01.2012, 17:59
Было бы совсем замечательно пояснение наиболее заковыристых моментов , т.к. мне как новичку мало понятно , к примеру такой момент как
if (g5.IsMatch(all))
{
MatchCollection matches = g5.Matches(all);

foreach (Match y in matches) { res += y.Groups[1].ToString() + razd; }
}

или

string otvet = send_POST("[Ссылки могут видеть только зарегистрированные и активированные пользователи]", "key=091f3644b5dcf9bc0e3b1ead2f1d12c1&sig=6d7c635916fc0df00cafaa95e7ba7e9e&method=getInfo&user=63435282");
string avtoritet = parse(otvet, "<rating>", "</rating>", "");
MessageBox.Show("Авторитет: "+avtoritet);


Рас уж для новичков , то было бы не плохо с пояснениями , а не как для мартышек , только копи-пастить и все )
Ещё бы было очень полезно какую нибудь инфу про try-catch для чего эти методы используются в данной ситуации , только на более понятном человеческом языке. Т.к. в нете очень заумно написано и получается выполнение неосмысленных действий....

Добавлено через 2 минуты
И ещё на шарпе код будет выглядеть так же ?

Gamer1912
26.01.2012, 21:12
Обьясни еще пожалуйста что такое response_POST ?

response, Существительное
[rɪsˈpɔns]
ответ

response post - ответ от post-запроса

P.S. Совет: учи английский, тогда и начнешь понимать.

Sleepy_Master, Это и есть C#, просто не в том разделе тема.

siegKaLaSh
18.03.2012, 19:26
Подскажите пожалуйста, как можно сохранить всю страницу в массив? В консольной программе C++.

Bambu4a_Esc
05.05.2012, 12:30
Подскажите пожалуйста, как можно сохранить всю страницу в массив? В консольной программе C++.
функции read, write