Приветствую!
Получаю доступ к http посредством WinInet'а. Делаю вот так:
HINTERNET hIntSession = NULL, hHTTPSession = NULL, hHTTPRequest = NULL;
const CHAR *AcceptedType[] = {"*/*", 0};
hIntSession = InternetOpenA("Microsoft Internet Explorer", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
hHTTPSession = InternetConnectA( hIntSession, host, 80, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
hHTTPRequest = HttpOpenRequestA( hHTTPSession, "POST", path, NULL, NULL, AcceptedType,
INTERNET_FLAG_PRAGMA_NOCACHE | INTERNET_FLAG_RELOAD, 0 );
if (!hIntSession || !hHTTPSession || !hHTTPRequest) {
*dwResultLen = 0;
return -1;
}
CHAR headerfield[] = "Content-Type: application/x-www-form-urlencoded";
HttpSendRequestA(hHTTPRequest, headerfield, (DWORD) strlen(headerfield), postdata, (DWORD) strlen(postdata));
Это прекрасно работает, когда интернет прямой. На машине, где интернет через прокси + авторизация ntlm — не работает.
HttpSendRequestA завершается неудачей, а GetLstError возвращает 12029 ERROR_INTERNET_CANNOT_CONNECT.
В IE инет есть. Можно ли использовать WinInet так, чтобы в моём приложении тоже был интернет, причём вся конфигурация бралась автоматически? Я думал, что INTERNET_OPEN_TYPE_PRECONFIG как раз для такого дела.. Или я что-то делаю не так?
Спасибо!