Авторизация на сайте vk.com в C++ Builder XE
Запись от QVO размещена 15.08.2012 в 18:42
Для авторизации на сайте vk.com первым делом создадим форму в IDE: C++ Builder Xe. И разместим на ней такие компоненты:
В дебри лезть не буду, сразу просмотрим ответ с vk.com при авторизации на сайте. Нам нужно вытащить hash, а именно remixchk и remixsid. Цитата:
Host: vk.com
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.79 Safari/537.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Referer: http://vk.com/login?act=mobile Accept-Encoding: gzip,deflate,sdch Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3 Cookie: remixdt=-3600; remixlang=0; audio_time_left=0; remixchk=5; remixseenads=2; audio_vol=100; remixflash=11.3.31; remixsid=2e8e36403d20435ffce1ab1da0ab2c31d25562e5f404b0d0f1958cb88eab; remixreg_sid=; remixrec_sid=
Теперь осталось написать код в кнопке Войти:
|
Всего комментариев 1
Комментарии
-
1.
Может наоборот ?C++ 1 2 3 4
IdHTTP->AllowCookies = false; // Настраиваем автоматический переход на перенаправляемую страницу. IdHTTP->HandleRedirects = false; // Делаем запрос к vk.com, передаем логин и пароль.
2.C++ 1 2
IdHTTP->AllowCookies = true; // Позволить сохранять кукисы IdHTTP->HandleRedirects = true; // Автоматически переходит по перенаправляемым страницам ...
Принимает std::string работающий с char в то время как передаваться может в коде wchar_t* возврашаемый String через метод с_str() при дефолтовых настройках Builder-аC++ 1
const std::string __fastcall htmlParservremixSID(const std::string cmd)
3.C++ 1
remixsid = htmlParservremixSID( response.c_str() ).c_str();
Лучше ловить через исколючения.C++ 1 2 3 4
// Ловим ответ "HTTP 302" if ( IdHTTP->ResponseCode == 302 ) { //...
4.
Зачем здесь break ?C++ 1 2 3 4 5
switch(e.ErrorCode) { case 200: return false; break; // ... }
5. А если по регулярке не будет нечего найдено ?
6.C++ 1 2 3 4 5 6
const std::string __fastcall htmlParservremixSID(const std::string cmd) { boost::smatch result; if(boost::regex_search(cmd, result, pvremixSID)) return std::string(result[1]); }
Непонятно почему регулярки объявлены глобально ?
И почему ф-ции возвращают const std::string ?Запись от Avazart размещена 25.08.2012 в 03:41