Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Авторегистрация на сайте (С++ + WinAPI)

47K
03 августа 2010 года
9l.
33 / / 04.05.2010
Привет всем, мне необходимо написать авторегистратор для сайта без использования левых библиотек, только силами С++ и WinAPI, насколько я знаю для этого надо отправить POST запрос на сервер где будет вся необходимая информация для регистрации. Подскажите функции WinAPI необходимые для отправки POST запросов. Заранее спасибо (=
253
03 августа 2010 года
Proger_XP
1.5K / / 07.08.2004
Цитата: 9l.
Подскажите функции WinAPI необходимые для отправки POST запросов. Заранее спасибо (=


WinInet тебе в помощь, там есть все нужные функции. В гугле тоже по теме отправки post-запросов через WinInet на Си много чего есть.

47K
03 августа 2010 года
9l.
33 / / 04.05.2010
Нашел неплохую статью про WinInet, если кому то интересно то вот ссылка http://www.rsdn.ru/article/inet/wininet.xml. Разбираюсь как отправить данные...
47K
04 августа 2010 года
9l.
33 / / 04.05.2010
Вот что я написал
Код:
#include <stdio.h>
#include <clocale>
#include <windows.h>
#include <wininet.h>
#pragma comment(lib,"wininet")

int main()
{
    HINTERNET   internet;
    HINTERNET   connect;
    HINTERNET   request;
    char        data[1024];
        DWORD   bytesRead;
        bool        read = true;

    setlocale(LC_CTYPE, "");

    internet = InternetOpen(L"Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.0; .NET CLR 1.0.2914) ",
                    INTERNET_OPEN_TYPE_PRECONFIG,
                    NULL,
                    NULL,
                    0);

    connect = InternetConnect(internet,
                                             L"***.com",
                         INTERNET_DEFAULT_HTTP_PORT,
                         NULL,
                         NULL,
                         INTERNET_SERVICE_HTTP,
                         0,
                         1);

    request = HttpOpenRequest(connect,
                          L"POST",
                          L"***.php",
                          NULL,
                          NULL,
                          0,
                          INTERNET_FLAG_KEEP_CONNECTION,
                          1);

    wchar_t* str = L"username=test&password=1&confirm_password=1&email=test@yandex.ru";

    HttpSendRequest(request,
                        str,
                    sizeof(str),
                NULL,
                0);

    InternetCloseHandle(request);
        InternetCloseHandle(connect);
    InternetCloseHandle(internet);

    return 0;
}


Код компилируется, но запрос не отправляется, подскажите в чём я ошибся.
253
04 августа 2010 года
Proger_XP
1.5K / / 07.08.2004
Зачем у тебя dwContext = 1, а не 0?
Вдобавок, в InternetConnect нужно передавать имя домена, а не путь - иначе работать не будет:
 
Код:
InternetConnect(internet, ... [COLOR="Red"]1[/COLOR]);
HttpOpenRequest(connect, [COLOR="Red"]'localhost'[/COLOR], ... [COLOR="Red"]1[/COLOR]);


Цитата:

lpszServerName | MSDN
Pointer to a null-terminated string that specifies the host name of an Internet server. Alternately, the string can contain the IP number of the site, in ASCII dotted-decimal format (for example, 11.0.1.45).



Всё остальное вроде верно.

Поставь себе какой-нибудь отладчик, который будет запросы ловить - HTTP Debugger к примеру - он тебе покажет все заголовки и прочую инфу о HTTP трафике.

47K
12 августа 2010 года
9l.
33 / / 04.05.2010
Всё разобрался, спасибо, тема закрыта.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог