Получение страницы новостей ВКонтакте?

  • strOpt - в ней ящик и пароль прописываются;
  • szData - это буфер для приема кода страницы.
code: #cpp
#include 
#include 
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
        HINTERNET hInternet =
        ::InternetOpen(
            TEXT("WinInet Test"),
            INTERNET_OPEN_TYPE_PRECONFIG,
            NULL,NULL,
            0);
 
    if (hInternet != NULL) {
        // открываем HTTP сессию
        HINTERNET hConnect = 
            ::InternetConnect(
                hInternet,
                TEXT("vkontakte.ru"),
                INTERNET_DEFAULT_HTTP_PORT,
                NULL,NULL,
                INTERNET_SERVICE_HTTP,
                0,
                1u);
 
        if (hConnect != NULL) {
            // открываем запрос
            HINTERNET hRequest = 
                ::HttpOpenRequest(
                    hConnect,
                    TEXT("POST"),
                    TEXT("/login.php"),
                    NULL,
                    NULL,
                    0,
                    INTERNET_FLAG_KEEP_CONNECTION,
                    1);
 
            if (hRequest != NULL) {
 
                char strOpt[] = "email=email@email.com&pass=password";
 
                BOOL bSend; string strAdd;
 
                // Формируем заголовок
                strAdd = "Accept: */*";
                bSend = ::HttpAddRequestHeaders(hRequest, strAdd.c_str(), strAdd.length(), HTTP_ADDREQ_FLAG_ADD);
                strAdd = "Content-Type: application/x-www-form-urlencoded";
                bSend = ::HttpAddRequestHeaders(hRequest, strAdd.c_str(), strAdd.length(), HTTP_ADDREQ_FLAG_ADD);
 
                // посылаем запрос
                bSend = ::HttpSendRequest(hRequest, NULL, 0, (void*)strOpt, strlen(strOpt));
 
                hRequest = ::HttpOpenRequest(
                     hConnect,
                     TEXT("GET"),
                     TEXT("/newsfeed.php"),
                     NULL,
                     NULL,
                     0,
                     INTERNET_FLAG_KEEP_CONNECTION,
                     1);
 
                bSend = ::HttpSendRequest(hRequest, NULL, 0, NULL, 0); 
 
                if (bSend) {
                        // читаем данные
                        char  szData[204800];
                        DWORD dwBytesRead;
                        BOOL bRead = 
                            ::InternetReadFile(
                                hRequest,
                                szData,sizeof(szData)-1,
                                &dwBytesRead);
                        szData[dwBytesRead] = 0;
                        if(bRead) {
                                                        ofstream fnews("news.html",ios::out|ios::binary);
                            fnews<<szData;
                            //UpdateData(false);
                        }
                        else {
                            MessageBox(NULL, "Error", "", MB_OK);
                            //UpdateData(false);
                        }
                }
 
                // закрываем запрос
                ::InternetCloseHandle(hRequest);
            }
            // закрываем сессию
            ::InternetCloseHandle(hConnect);
        }
        // закрываем WinInet
        ::InternetCloseHandle(hInternet);
    }
        system("start news.html");
 
    return 0;
}

автор: AkaPaul

Поделиться:

Похожие статьи: