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

Ваш аккаунт

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

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

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

WinInet need help

17K
14 октября 2006 года
sax0n
6 / / 07.10.2006
привет всем.
Вот появилась проблемка такая.
Нужно методом ПОСТ отправить на сервер сообщение и получить ответ.
Тестирую на локалхосте.
url = "localhost"
lpWhere = "/cgi-bin/1.pl"
lpszData = "txt1=%1d&txt2=%1d"

Насколько я могу судить, программа коннектиться нормально. Ошибка возникает (точнее просто ничего не возникает) при выполнении HttpQueryInfo.
Код:
Код:
bool CHTTPClass::Connect(LPCTSTR url)
{
    hInternet = InternetOpen(url, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
    if (hInternet == NULL) return false;
    hConnect = InternetConnect(hInternet,url,
                INTERNET_DEFAULT_HTTP_PORT,
                NULL,NULL, INTERNET_SERVICE_HTTP, 0, 1u);
    if (hConnect == NULL) return false;
    return true;
}

CHTTPClass::SendAndProcessData(LPCTSTR lpWhere, LPSTR lpszData)
{
    DWORD size = 0;
    DWORD rsize = sizeof(size);

    if(hConnect == NULL) return 0;
    HINTERNET hRequest = HttpOpenRequest(hConnect, "POST", lpWhere,
        NULL, NULL, 0, INTERNET_FLAG_KEEP_CONNECTION, 1);
    if (hRequest == NULL)
    {
        InternetCloseHandle(hRequest);
        return 0;
    }
    if(HttpSendRequest(hRequest, "*/*",  0, (LPVOID)lpszData, sizeof(lpszData)))
    {
        InternetCloseHandle(hRequest);
        return 0;
    }
//  unsigned char * size = (unsigned char *) malloc(rsize);
    if(!HttpQueryInfo(hRequest, HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER, &size, &rsize, NULL))
    {
        InternetCloseHandle(hRequest);
        return 0;
    }
    size++;
    unsigned char * Data = (unsigned char *) malloc(size);
    DWORD lpdwBytesRead = 1;
    DWORD dRead = 0;
    int bRead;
    FILE* f;
    f = fopen("c:\\inet.txt", "wb");
    while(lpdwBytesRead > 0 || dRead < size)
    {
        bRead = InternetReadFile(hRequest, Data, size+1, &lpdwBytesRead);
        dRead += lpdwBytesRead;
        Data[lpdwBytesRead] = 0;
        fwrite(Data, lpdwBytesRead, 1, f);
    }
    fclose(f);
    return 0;
}


Содержание 1.pl:

 
Код:
#!c:\WWW\Perl\bin\Perl.exe -w
print "Content-type: text/html\n\n";
print "It works!<br>\n";


Хотелось бы в ближайшее время услышать коммент публики.
Заранее спасибо
9
15 октября 2006 года
Lerkin
3.0K / / 25.03.2003
Не знаю, может поможет: http://www.rsdn.ru/article/inet/wininet_delphi.xml

Правда на дельфях, но там WinInet API, разобраться можно...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог