Я использую Visual Studio 2005 с приложением MFC, которое имеет функции для доступа к веб-сайту для небольшого файла. Я использую функции WinINet
, см. Справку по WinINet API в Центре разработки Microsoft Windows , которая предоставляет простой набор функций для доступа к веб-сайту с помощью URL-адреса, который задает протокол (HTTP, HTTPS, FTP). и т. д.), чтобы раскрыть небольшой файл.
На сайте libcurl
была ссылка на это Техническое примечание Microsoft, Идентификатор статьи 238425 - ИНФОРМАЦИЯ: WinInet не поддерживается для использования в службах , которая помечена как удаленная с 12 августа. 2015. Краткое содержание статьи:
Функции Microsoft Win32 Internet (экспортированные из WinInet.dll)
не поддерживается при запуске из службы или интернет-информации
Приложение сервера (IIS) (также услуга). Эта статья обсуждает
использование WinInet.dll в службе или на информационном сервере Интернета
приложения.
Применимый исходный код, который я использую в своем приложении MFC, имеет диалоговое окно, в котором используется URL-адрес типа HTTPS, к которому добавлена дополнительная информация для создания полного URI, а затем перейдите на веб-сайт, чтобы получить полный маленький файл:
int GetFile (HINTERNET hOpen, TCHAR * szURL, BYTE szTemp[4096])
{
DWORD dwSize;
TCHAR szHead[15];
HINTERNET hConnect;
szHead[0] = '\0';
szTemp[0] = 0;
// Opens a resource specified by a complete HTTP URL.
if ( !(hConnect = InternetOpenUrl( hOpen, szURL, szHead, 15, INTERNET_FLAG_DONT_CACHE, 0)))
{
DWORD dwlasterror = GetLastError();
if (dwlasterror == ERROR_INTERNET_NAME_NOT_RESOLVED) {
AfxMessageBox (_T("Error: ERROR_INTERNET_NAME_NOT_RESOLVED - check LAN connectivity."));
} else if (dwlasterror == ERROR_INTERNET_TIMEOUT) {
AfxMessageBox (_T("Error: ERROR_INTERNET_TIMEOUT - check LAN connectivity."));
} else if (dwlasterror == ERROR_INTERNET_SERVER_UNREACHABLE) {
AfxMessageBox (_T("Error: ERROR_INTERNET_SERVER_UNREACHABLE - check LAN connectivity."));
} else if (dwlasterror == ERROR_INTERNET_OPERATION_CANCELLED) {
AfxMessageBox (_T("Error: ERROR_INTERNET_OPERATION_CANCELLED - check LAN connectivity."));
} else {
CString msg;
msg.Format (_T("Error: GetLastError() returned %d."), dwlasterror);
AfxMessageBox (msg);
}
return -2;
}
// Reads data from a handle opened by the InternetOpenUrl, FtpOpenFile, or HttpOpenRequest function.
if (InternetReadFile (hConnect, szTemp, 4096, &dwSize) )
{
if (dwSize) {
return dwSize;
}
return -3;
}
return -4;
}
int DownloadURLImage (TCHAR * szURL, BYTE szTemp[4096])
{
int result = -1;
HINTERNET hInternet;
// Initializes an application's use of the WinINet functions.
hInternet= InternetOpen (_T("DeviceConfig"), INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, NULL);
if (hInternet) {
// if open succeeded then get the file and close the handle as we be done.
result = GetFile (hInternet, szURL, szTemp) ;
InternetCloseHandle(hInternet);
}
return result ;
}