mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
2.9 KiB
127 lines
2.9 KiB
/*++
|
|
|
|
Copyright (c) 1995 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
io.c
|
|
|
|
Abstract:
|
|
|
|
I/O support for the miniweb sample web browser.
|
|
|
|
Author:
|
|
|
|
David Treadwell (davidtr) 16-Mar-1995
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#include "miniweb.h"
|
|
|
|
|
|
BOOL
|
|
GetHttpObject (
|
|
IN LPSTR ServerName,
|
|
IN LPSTR ObjectName,
|
|
IN INTERNET_PORT ServerPort,
|
|
IN LPBYTE Buffer,
|
|
IN DWORD BufferLength,
|
|
OUT LPDWORD BytesRead
|
|
)
|
|
{
|
|
BOOL success;
|
|
HINTERNET serverHandle;
|
|
HINTERNET requestHandle;
|
|
DWORD bytesRead;
|
|
DWORD totalBytesRead;
|
|
|
|
//
|
|
// Connect to the HTTP server.
|
|
//
|
|
|
|
serverHandle = InternetConnect(
|
|
hInternetSession,
|
|
ServerName,
|
|
ServerPort,
|
|
NULL,
|
|
NULL,
|
|
INTERNET_SERVICE_HTTP,
|
|
0,
|
|
0
|
|
);
|
|
if ( serverHandle == NULL ) {
|
|
printf( "InternetConnect failed: %ld\n", GetLastError( ) );
|
|
return FALSE;
|
|
}
|
|
|
|
//
|
|
// Prepare and send the request that we're going to make.
|
|
//
|
|
|
|
requestHandle = HttpOpenRequest(
|
|
serverHandle,
|
|
"GET",
|
|
ObjectName,
|
|
HTTP_VERSION,
|
|
NULL,
|
|
NULL,
|
|
INTERNET_FLAG_RELOAD,
|
|
0
|
|
);
|
|
if ( requestHandle == NULL ) {
|
|
printf( "HttpOpenRequest failed: %ld\n", GetLastError( ) );
|
|
InternetCloseHandle( serverHandle );
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
success = HttpSendRequest( requestHandle, NULL, 0, NULL, 0 );
|
|
if ( !success ) {
|
|
printf( "HttpSendRequest failed: %ld\n", GetLastError( ) );
|
|
InternetCloseHandle( requestHandle );
|
|
InternetCloseHandle( serverHandle );
|
|
return FALSE;
|
|
}
|
|
|
|
//
|
|
// Now read the response from the server.
|
|
//
|
|
|
|
totalBytesRead = 0;
|
|
|
|
do {
|
|
|
|
success = InternetReadFile(
|
|
requestHandle,
|
|
Buffer + totalBytesRead,
|
|
BufferLength - totalBytesRead,
|
|
&bytesRead
|
|
);
|
|
if ( !success ) {
|
|
printf( "InternetReadFile failed after %ld bytes: %ld\n",
|
|
totalBytesRead, GetLastError( ) );
|
|
InternetCloseHandle( requestHandle );
|
|
InternetCloseHandle( serverHandle );
|
|
return FALSE;
|
|
}
|
|
|
|
totalBytesRead += bytesRead;
|
|
|
|
} while ( bytesRead != 0 && totalBytesRead < BufferLength );
|
|
|
|
//
|
|
// Everything worked. Return the total number of bytes we read into
|
|
// the caller's buffer. Note that we ignore the case when the
|
|
// returned information is longer than caller's buffer.
|
|
//
|
|
|
|
*BytesRead = totalBytesRead;
|
|
|
|
InternetCloseHandle( requestHandle );
|
|
InternetCloseHandle( serverHandle );
|
|
|
|
return TRUE;
|
|
|
|
} // GetUrl
|