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;
}
WinInet need help
Вот появилась проблемка такая.
Нужно методом ПОСТ отправить на сервер сообщение и получить ответ.
Тестирую на локалхосте.
url = "localhost"
lpWhere = "/cgi-bin/1.pl"
lpszData = "txt1=%1d&txt2=%1d"
Насколько я могу судить, программа коннектиться нормально. Ошибка возникает (точнее просто ничего не возникает) при выполнении HttpQueryInfo.
Код:
Код:
Содержание 1.pl:
Код:
#!c:\WWW\Perl\bin\Perl.exe -w
print "Content-type: text/html\n\n";
print "It works!<br>\n";
print "Content-type: text/html\n\n";
print "It works!<br>\n";
Хотелось бы в ближайшее время услышать коммент публики.
Заранее спасибо
http://www.rsdn.ru/article/inet/wininet_delphi.xml
Правда на дельфях, но там WinInet API, разобраться можно...
Не знаю, может поможет:
Правда на дельфях, но там WinInet API, разобраться можно...