Add response code output to HTTPClient

This commit is contained in:
Richard Stanway 2012-12-23 23:11:34 -05:00
parent 2fc7a3c46d
commit d9eacef921
2 changed files with 10 additions and 8 deletions

View File

@ -20,7 +20,7 @@
#include "Main.h" #include "Main.h"
#include <winhttp.h> #include <winhttp.h>
BOOL HTTPGetFile (CTSTR url, CTSTR outputPath, CTSTR extraHeaders) BOOL HTTPGetFile (CTSTR url, CTSTR outputPath, CTSTR extraHeaders, int *responseCode)
{ {
HINTERNET hSession = NULL; HINTERNET hSession = NULL;
HINTERNET hConnect = NULL; HINTERNET hConnect = NULL;
@ -81,10 +81,9 @@ BOOL HTTPGetFile (CTSTR url, CTSTR outputPath, CTSTR extraHeaders)
if (!WinHttpQueryHeaders (hRequest, WINHTTP_QUERY_STATUS_CODE, WINHTTP_HEADER_NAME_BY_INDEX, &statusCode, &statusCodeLen, WINHTTP_NO_HEADER_INDEX)) if (!WinHttpQueryHeaders (hRequest, WINHTTP_QUERY_STATUS_CODE, WINHTTP_HEADER_NAME_BY_INDEX, &statusCode, &statusCodeLen, WINHTTP_NO_HEADER_INDEX))
goto failure; goto failure;
if (!scmp(statusCode, TEXT("200"))) *responseCode = wcstoul(statusCode, NULL, 10);
goto failure;
if (bResults) if (bResults && *responseCode == 200)
{ {
BYTE buffer[16384]; BYTE buffer[16384];
DWORD dwSize, dwOutSize; DWORD dwSize, dwOutSize;
@ -107,6 +106,9 @@ BOOL HTTPGetFile (CTSTR url, CTSTR outputPath, CTSTR extraHeaders)
} }
else else
{ {
if (!dwOutSize)
break;
if (!updateFile.Write(buffer, dwOutSize)) if (!updateFile.Write(buffer, dwOutSize))
goto failure; goto failure;
} }
@ -119,11 +121,11 @@ BOOL HTTPGetFile (CTSTR url, CTSTR outputPath, CTSTR extraHeaders)
failure: failure:
if (hSession) if (hSession)
CloseHandle(hSession); WinHttpCloseHandle(hSession);
if (hConnect) if (hConnect)
CloseHandle(hConnect); WinHttpCloseHandle(hConnect);
if (hRequest) if (hRequest)
CloseHandle(hRequest); WinHttpCloseHandle(hRequest);
return ret; return ret;
} }

View File

@ -19,5 +19,5 @@
#pragma once #pragma once
BOOL HTTPGetFile (CTSTR url, CTSTR outputPath, CTSTR extraHeaders); BOOL HTTPGetFile (CTSTR url, CTSTR outputPath, CTSTR extraHeaders, int *responseCode);