maksy
26.07.2011, 19:48
Помогите написать код для авторизации в контакте и добавления сообшения на стену.
Авторизация: 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.Text.RegularExpressions;
namespace VK_Auth
{
public partial class Form1 : Form
{
string sid;
Cookie cook;
public Form1()
{
InitializeComponent();
f2 = new Form2();
label1.Text = "Email:";
label1.Font = new Font(label1.Font.FontFamily, 12, FontStyle.Bold);
label2.Text = "Password:";
label2.Font = new Font(label2.Font.FontFamily,12, FontStyle.Bold);
button1.Text = "Login";
}
Form2 f2;
private void button1_Click(object sender, EventArgs e)
{
//создаем запрос
[Ссылки могут видеть только зарегистрированные и активированные пользователи] wrGETURL = ([Ссылки могут видеть только зарегистрированные и активированные пользователи])System.Net.WebRequest.Create("[Ссылки могут видеть только зарегистрированные и активированные пользователи]" + textBox1.Text + "&pass=" + textBox2.Text);
//выставляем значения Headers
//Запрещаем редирект
wrGETURL.AllowAutoRedirect = false;
//Выставляем таймаут
wrGETURL.Timeout = 100000;
//получаем Headers,пришедшие в ответе
string headers = wrGETURL.GetResponse().Headers.ToString();
//получаем весь ответ
[Ссылки могут видеть только зарегистрированные и активированные пользователи] my[Ссылки могут видеть только зарегистрированные и активированные пользователи] = ([Ссылки могут видеть только зарегистрированные и активированные пользователи])wrGETURL.GetResponse();
//записываем ответ в поток
StreamReader myStreamReadermy = new StreamReader(my[Ссылки могут видеть только зарегистрированные и активированные пользователи]() , Encoding.GetEncoding(1251));
//запихиваем ответ в строку
string page = myStreamReadermy.ReadToEnd();
//это регулярное выражение,которое выдирает из переменной headers(а ее мы получили выше) значение sid
Regex sidregex = new Regex("sid=([a-z0-9]+); exp");
Match ssid = sidregex.Match(headers);
sid = ssid.Groups[1].Value;
//инициализируем куки
cook = new Cookie("remixsid", sid);
//тоже самое,куки пишем
cook.Domain = "vkontakte.ru";
//проверяем,получили ли мы нужную переменную в куки
if (String.IsNullOrEmpty(sid))
MessageBox.Show("Чето не получается авторизироваться");
else
f2.Show();
}
}
}
А вот добавление сообщения не могу написать,на форме 2 есть кнопка и поле для ввода при нажатии на кнопку должно отправляться сообщение: пример пользователю id которого написан в поле для ввода.
Тут также надо использовать cookie как их использовать в программе описано здесь ([Ссылки могут видеть только зарегистрированные и активированные пользователи]).
Помогите пожалуйста, просто я в post запросах не разбираюсь:nono:
P.S не надо мне писать как да что делать просто напишите код и если можно коменты.
Авторизация: 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.Text.RegularExpressions;
namespace VK_Auth
{
public partial class Form1 : Form
{
string sid;
Cookie cook;
public Form1()
{
InitializeComponent();
f2 = new Form2();
label1.Text = "Email:";
label1.Font = new Font(label1.Font.FontFamily, 12, FontStyle.Bold);
label2.Text = "Password:";
label2.Font = new Font(label2.Font.FontFamily,12, FontStyle.Bold);
button1.Text = "Login";
}
Form2 f2;
private void button1_Click(object sender, EventArgs e)
{
//создаем запрос
[Ссылки могут видеть только зарегистрированные и активированные пользователи] wrGETURL = ([Ссылки могут видеть только зарегистрированные и активированные пользователи])System.Net.WebRequest.Create("[Ссылки могут видеть только зарегистрированные и активированные пользователи]" + textBox1.Text + "&pass=" + textBox2.Text);
//выставляем значения Headers
//Запрещаем редирект
wrGETURL.AllowAutoRedirect = false;
//Выставляем таймаут
wrGETURL.Timeout = 100000;
//получаем Headers,пришедшие в ответе
string headers = wrGETURL.GetResponse().Headers.ToString();
//получаем весь ответ
[Ссылки могут видеть только зарегистрированные и активированные пользователи] my[Ссылки могут видеть только зарегистрированные и активированные пользователи] = ([Ссылки могут видеть только зарегистрированные и активированные пользователи])wrGETURL.GetResponse();
//записываем ответ в поток
StreamReader myStreamReadermy = new StreamReader(my[Ссылки могут видеть только зарегистрированные и активированные пользователи]() , Encoding.GetEncoding(1251));
//запихиваем ответ в строку
string page = myStreamReadermy.ReadToEnd();
//это регулярное выражение,которое выдирает из переменной headers(а ее мы получили выше) значение sid
Regex sidregex = new Regex("sid=([a-z0-9]+); exp");
Match ssid = sidregex.Match(headers);
sid = ssid.Groups[1].Value;
//инициализируем куки
cook = new Cookie("remixsid", sid);
//тоже самое,куки пишем
cook.Domain = "vkontakte.ru";
//проверяем,получили ли мы нужную переменную в куки
if (String.IsNullOrEmpty(sid))
MessageBox.Show("Чето не получается авторизироваться");
else
f2.Show();
}
}
}
А вот добавление сообщения не могу написать,на форме 2 есть кнопка и поле для ввода при нажатии на кнопку должно отправляться сообщение: пример пользователю id которого написан в поле для ввода.
Тут также надо использовать cookie как их использовать в программе описано здесь ([Ссылки могут видеть только зарегистрированные и активированные пользователи]).
Помогите пожалуйста, просто я в post запросах не разбираюсь:nono:
P.S не надо мне писать как да что делать просто напишите код и если можно коменты.