ReactOS 0.4.16-dev-1946-g52006dd
CWebServiceWinInet.cpp
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS Automatic Testing Utility
3 * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
4 * PURPOSE: Class implementing the WinInet version of the interface to the "testman" Web Service
5 * COPYRIGHT: Copyright 2009-2015 Colin Finck <colin@reactos.org>
6 * Copyright 2025 Mark Jansen <mark.jansen@reactos.org>
7 */
8
9#include "precomp.h"
10
15{
16 /* Zero-initialize variables */
17 m_hHTTP = NULL;
19
20 /* Establish an internet connection to the "testman" server */
22
23 if(!m_hInet)
24 FATAL("InternetOpenW failed\n");
25}
26
31{
32 if(m_hInet)
34
35 if(m_hHTTP)
37
40}
41
53CWebServiceWinInet::DoRequest(const char *Hostname, INTERNET_PORT Port, const char *ServerFile, const string &InputData)
54{
55 const WCHAR szHeaders[] = L"Content-Type: application/x-www-form-urlencoded";
56
59
60 if (!m_hHTTP)
61 {
63
64 if (!m_hHTTP)
65 FATAL("InternetConnectW failed\n");
66
67 }
68
69 /* Post our test results to the web service */
71
73 FATAL("HttpOpenRequestW failed\n");
74
75 Data.reset(new char[InputData.size() + 1]);
76 strcpy(Data, InputData.c_str());
77
78 if(!HttpSendRequestW(m_hHTTPRequest, szHeaders, lstrlenW(szHeaders), Data, (DWORD)InputData.size()))
79 FATAL("HttpSendRequestW failed\n");
80
81 /* Get the response */
83 FATAL("InternetQueryDataAvailable failed\n");
84
85 Data.reset(new char[DataLength + 1]);
86
88 FATAL("InternetReadFile failed\n");
89
90 Data[DataLength] = 0;
91
92 return Data.release();
93}
_In_ ULONG _In_opt_ WDFREQUEST _In_opt_ PVOID _In_ size_t _In_ PVOID _In_ size_t _Out_ size_t * DataLength
Definition: cdrom.h:1444
PCHAR DoRequest(const char *Hostname, INTERNET_PORT Port, const char *ServerFile, const string &InputData) override
#define NULL
Definition: types.h:112
#define lstrlenW
Definition: compat.h:750
HINTERNET WINAPI HttpOpenRequestA(HINTERNET hHttpSession, LPCSTR lpszVerb, LPCSTR lpszObjectName, LPCSTR lpszVersion, LPCSTR lpszReferrer, LPCSTR *lpszAcceptTypes, DWORD dwFlags, DWORD_PTR dwContext)
Definition: http.c:1410
BOOL WINAPI HttpSendRequestW(HINTERNET hHttpRequest, LPCWSTR lpszHeaders, DWORD dwHeaderLength, LPVOID lpOptional, DWORD dwOptionalLength)
Definition: http.c:5595
BOOL WINAPI InternetReadFile(HINTERNET hFile, LPVOID lpBuffer, DWORD dwNumOfBytesToRead, LPDWORD pdwNumOfBytesRead)
Definition: internet.c:2154
BOOL WINAPI InternetCloseHandle(HINTERNET hInternet)
Definition: internet.c:1414
BOOL WINAPI InternetQueryDataAvailable(HINTERNET hFile, LPDWORD lpdwNumberOfBytesAvailable, DWORD dwFlags, DWORD_PTR dwContext)
Definition: internet.c:3959
HINTERNET WINAPI InternetConnectA(HINTERNET hInternet, LPCSTR lpszServerName, INTERNET_PORT nServerPort, LPCSTR lpszUserName, LPCSTR lpszPassword, DWORD dwService, DWORD dwFlags, DWORD_PTR dwContext)
Definition: internet.c:1321
HINTERNET WINAPI InternetOpenW(LPCWSTR lpszAgent, DWORD dwAccessType, LPCWSTR lpszProxy, LPCWSTR lpszProxyBypass, DWORD dwFlags)
Definition: internet.c:979
#define L(x)
Definition: resources.c:13
unsigned long DWORD
Definition: ntddk_ex.h:95
CPPORT Port[4]
Definition: headless.c:35
#define FATAL(Message)
Definition: precomp.h:59
strcpy
Definition: string.h:131
char * PCHAR
Definition: typedefs.h:51
WORD INTERNET_PORT
Definition: winhttp.h:38
#define INTERNET_FLAG_RELOAD
Definition: wininet.h:61
#define INTERNET_FLAG_NO_COOKIES
Definition: wininet.h:75
#define INTERNET_FLAG_NO_CACHE_WRITE
Definition: wininet.h:66
#define INTERNET_FLAG_SECURE
Definition: wininet.h:71
#define INTERNET_OPEN_TYPE_PRECONFIG
Definition: wininet.h:521
#define INTERNET_SERVICE_HTTP
Definition: wininet.h:562
__wchar_t WCHAR
Definition: xmlstorage.h:180