GLOBAL_SERVER = "host.com";
GLOBAL_PATH = "/path/to/script.php"; // например
AnsiString Post(AnsiString header, const void * data2, const int content_length)
{
DWORD dwServiceType;
DWORD buffsize=0;
AnsiString strData;
HINTERNET hSession=NULL;
HINTERNET hConnect=NULL;
HINTERNET hRequest=NULL;
hSession=InternetOpen(USER_AGENT.c_str(), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
if (hSession)
{
hConnect=InternetConnect(hSession, GLOBAL_SERVER, PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
if (hConnect)
{
hRequest=HttpOpenRequest(hConnect, "POST", GLOBAL_PATH, NULL, NULL, NULL,
INTERNET_FLAG_DONT_CACHE|INTERNET_FLAG_KEEP_CONNECTION
|INTERNET_FLAG_IGNORE_CERT_CN_INVALID,0);
if(hRequest)
{
int tryCounts=1;
while (1)
{
BOOL resReq=HttpSendRequest( hRequest, header.c_str(), header.Length(), (LPVOID)data2, content_length );
if (!resReq)
{
DWORD dwError = GetLastError();
if (dwError != ERROR_INTERNET_INVALID_CA)
{
break;
}
else
{
DWORD dwFlags;
DWORD dwBuffLen = sizeof(dwFlags);
InternetQueryOption(hRequest, INTERNET_OPTION_SECURITY_FLAGS, (LPVOID)&dwFlags, &dwBuffLen);
dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA;
InternetSetOption(hRequest, INTERNET_OPTION_SECURITY_FLAGS, &dwFlags, sizeof(dwFlags));
continue;
}
}
else
{
DWORD dwStatusCode=0;
GetStatusCodeFormHTTPReq(hRequest, &dwStatusCode);
if ((dwStatusCode==200 && data2!=NULL) || (dwStatusCode>=200 && dwStatusCode<=299))
{
char rBuffer[1024];
DWORD rBytes=0;
while (1)
{
InternetReadFile(hRequest, rBuffer, 1023, &rBytes);
if (rBytes==0) break;
rBuffer[rBytes]=0;
strData+=(TCHAR *)rBuffer;
}
break;
}
else if (dwStatusCode == HTTP_STATUS_PROXY_AUTH_REQ)
{
if (tryCounts == 1)
{
appMessage("Can't complete request: Proxy authentication failed!\n\nPlease try to change \"Proxy server settings\" and try again.", 1);
break;
}
INTERNET_PER_CONN_OPTION_LIST List;
INTERNET_PER_CONN_OPTION Option[1];
unsigned long nSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
Option[0].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
strcpy(Option[0].Value.pszValue, AnsiString( "http://"+PROXY_ADDRESS+":"+AnsiString(PROXY_PORT) ).c_str());
List.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
List.pszConnection = NULL;
List.dwOptionCount = 1;
List.dwOptionError = 0;
List.pOptions = Option;
if(!InternetSetOption(hRequest, INTERNET_OPTION_PER_CONNECTION_OPTION, &List, nSize))
return AnsiString("Proxy authentication failed!\n"+getLastErrorText());
InternetSetOption(hRequest,
INTERNET_OPTION_PROXY_USERNAME,
PROXY_USERNAME.c_str(),
PROXY_USERNAME.Length()+1);
InternetSetOption(hRequest,
INTERNET_OPTION_PROXY_PASSWORD,
PROXY_PASSWORD.c_str(),
PROXY_PASSWORD.Length()+1);
tryCounts++;
}
else
{
if (tryCounts == 0) break;
}
}
}
InternetCloseHandle(hRequest);
}
InternetCloseHandle(hConnect);
}
InternetCloseHandle(hSession);
}
return strData;
}
Заполнение web форм
Подскажите как написать программку заполняющую web-форму данными из базы данных методом POST
Sockets
ну собссно, этого должно быть достаточно при знании какого-то языка программирования ;)
Все-таки через сокеты? Спасибо, полистаю
код для BuilderC++ 6.0 но заменить AnsiString на string или CString думаю можно :)
Код:
О, благодарствую, буду пробовать