1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
|
void DownloadFile()
{
DWORD status;
CONNMGR_CONNECTIONINFO connInfo;
HANDLE connHandle;
HRESULT hr;
GUID myGUID;
DWORD index;
HANDLE myReadyHandle;
TCHAR serverTest[255];
TCHAR m_sURL[1000];
DWORD dwConnStateFlags;
BOOL bRes;
HINTERNET hGETRequest;
DWORD dwFlags;
LPTSTR pszAcceptTypes [] = {TEXT("text/*"), NULL};
TCHAR szServer [1024];
TCHAR szEndpoint [1024];
URL_COMPONENTS crackedURL;
int nPort;
HINTERNET hConnect;
HINTERNET hOpen;
TCHAR sHTTPHeader[500];
hr=0;
status=0;
connHandle=0;
index=0;
myReadyHandle=0;
wsprintf(m_sURL,_T("http://www.mysite.com/test.html"));
memset(&myGUID, 0, sizeof(GUID));
myReadyHandle = ConnMgrApiReadyEvent();
if (WaitForSingleObject(myReadyHandle, 1000) != WAIT_OBJECT_0)
{
MessageBox(g_hwndMain, L"WaitForSingleObject.",L"",MB_OK);
return;
}
CloseHandle(myReadyHandle);
wsprintf(serverTest, _T("http://www.mysite.com"));
hr = ConnMgrMapURL(serverTest, &myGUID, &index);
memset(&connInfo, 0, sizeof(CONNMGR_CONNECTIONINFO));
connInfo.cbSize = sizeof(CONNMGR_CONNECTIONINFO);
connInfo.dwParams = CONNMGR_PARAM_GUIDDESTNET;
connInfo.dwPriority = CONNMGR_PRIORITY_USERINTERACTIVE;
connInfo.bExclusive = false;
connInfo.bDisabled = false;
connInfo.guidDestNet = myGUID;
hr = ConnMgrEstablishConnectionSync(&connInfo, &connHandle, 30000, &status);
if ( hr != S_OK )
{
MessageBox(g_hwndMain, L"Connection error.",L"",MB_OK);
return;
}
dwConnStateFlags = 0;
bRes = InternetGetConnectedState(&dwConnStateFlags,0);
if ( bRes )
{
wsprintf(g_tekst, L"ConnState = %X",dwConnStateFlags);
MessageBox(g_hwndMain, g_tekst,L"",MB_OK);
}
dwFlags = INTERNET_FLAG_NO_CACHE_WRITE | INTERNET_FLAG_KEEP_CONNECTION |
INTERNET_FLAG_IGNORE_CERT_CN_INVALID|INTERNET_FLAG_IGNORE_CERT_DATE_INVALID|
INTERNET_FLAG_PRAGMA_NOCACHE;
ZeroMemory (& crackedURL, sizeof (URL_COMPONENTS));
crackedURL.dwStructSize = sizeof (URL_COMPONENTS);
crackedURL.lpszHostName = szServer;
crackedURL.dwHostNameLength = 1024;
crackedURL.lpszUrlPath = szEndpoint;
crackedURL.dwUrlPathLength = 1024;
InternetCrackUrl (m_sURL, 0, 0, &crackedURL);
nPort = crackedURL.nPort;
hOpen = InternetOpen (L"Felleskatalogen", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
if ( !hOpen )
{
MessageBox(g_hwndMain, L"Failed to open WinInet",L"",MB_OK);
return;
}
hConnect = InternetConnect (hOpen, szServer, nPort, L"", L"", INTERNET_SERVICE_HTTP, 0, 0);
if ( !hConnect )
{
wsprintf(g_tekst, L"InternetConnect failed: %lu", GetLastError ());
MessageBox(g_hwndMain, g_tekst,L"",MB_OK);
return;
}
hGETRequest = HttpOpenRequest (hConnect, L"GET", szEndpoint, NULL, NULL, (LPCTSTR*) pszAcceptTypes, dwFlags, 0);
if ( !hGETRequest )
{
wsprintf(g_tekst, L"HttpOpenRequest failed: %lu", GetLastError ());
MessageBox(g_hwndMain, g_tekst,L"",MB_OK);
InternetCloseHandle (hConnect);
return;
}
wsprintf(sHTTPHeader, L"Content-Type: text/*\r\n");
if (! HttpSendRequest (hGETRequest, (LPCTSTR) sHTTPHeader, -1, NULL, 0))
{
wsprintf(g_tekst, L"HttpSendRequest failed: %lu", GetLastError ());
MessageBox(g_hwndMain, g_tekst,L"",MB_OK);
InternetCloseHandle (hGETRequest);
InternetCloseHandle (hConnect);
return;
}
DWORD dwNumberOfBytesAvailable = 0;
if ( InternetQueryDataAvailable(hGETRequest,&dwNumberOfBytesAvailable,0,0) )
{
wsprintf(g_tekst, L"File size is : %d",dwNumberOfBytesAvailable);
MessageBox(g_hwndMain, g_tekst,L"",MB_OK);
}
char szBuffer[4096];
DWORD dwNumberOfBytesRead = 0;
TCHAR wszTmp[4097];
int i = 0;
DWORD dwTotal = 0;
while ( InternetReadFile(hGETRequest, szBuffer, 4096,&dwNumberOfBytesRead) && dwNumberOfBytesRead )
{
memset(wszTmp,0,sizeof(wszTmp));
MultiByteToWideChar(CP_ACP,0,szBuffer,dwNumberOfBytesRead,wszTmp,sizeof(wszTmp));
i++;
dwTotal += dwNumberOfBytesRead;
}
wsprintf(g_tekst,L"Read %d block(s) - %lu byte(s)",i,dwTotal);
MessageBox(g_hwndMain, g_tekst,L"",MB_OK);
InternetCloseHandle (hGETRequest);
InternetCloseHandle (hConnect);
InternetCloseHandle (hOpen);
}
|