UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
WinHttpConnectionHttp.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#if WITH_WINHTTP
6
7#include "CoreMinimal.h"
10
15
16#include <atomic>
17
18class FWinHttpSession;
20class FRequestPayload;
21
23
25DECLARE_DELEGATE_TwoParams(FWinHttpConnectionHttpOnHeaderReceived, const FString& /*HeaderKey*/, const FString& /*HeaderValue*/);
27
29 : public IWinHttpConnection
30{
31public:
33 FWinHttpSession& Session,
34 const FString& Verb,
35 const FString& Url,
36 const TMap<FString, FString>& Headers,
38
42 FWinHttpConnectionHttp& operator=(const FWinHttpConnectionHttp& Other) = delete;
44
45 //~ Begin IWinHttpConnection Interface
46 HTTP_API virtual bool IsValid() const override;
47 HTTP_API virtual const FString& GetRequestUrl() const override;
48 HTTP_API virtual void* GetHandle() override;
49 HTTP_API virtual bool StartRequest() override;
50 HTTP_API virtual bool CancelRequest() override;
51 HTTP_API virtual bool IsComplete() const override;
52 HTTP_API virtual void PumpMessages() override;
53 HTTP_API virtual void PumpStates() override;
54 //~ End IWinHttpConnection Interface
55
57 EHttpResponseCodes::Type GetResponseCode() const { return ResponseCode; }
67
69
88
89protected:
91 FWinHttpSession& Session,
92 const FString& Url,
93 const FString& Verb,
94 const bool bIsSecure,
95 const FString& Domain,
96 const TOptional<uint16> Port,
97 const FString& PathAndQuery,
98 const TMap<FString, FString>& Headers,
100
102
110 HTTP_API bool SetHeaders(const TMap<FString, FString>& Headers);
111
120 HTTP_API bool SetHeader(const FString& Key, const FString& Value);
127 HTTP_API bool SetPayload(const TSharedRef<FRequestPayload, ESPMode::ThreadSafe>& NewPayload);
128
130
136 HTTP_API bool SendRequest();
154 HTTP_API bool HasRequestBodyToSend() const;
161
163
188
190
192 HTTP_API virtual bool FinishRequest(const EHttpRequestStatus::Type FinalState);
193
195
197 HTTP_API virtual void HandleConnectedToServer(const wchar_t* ServerIP);
205 HTTP_API virtual void HandleHeadersAvailable();
211 HTTP_API void HandleRequestError(const uint32 ErrorApiId, const uint32 ErrorCode);
213 HTTP_API virtual void HandleHandleClosing();
214
215private:
225
227 friend void CALLBACK UE_WinHttpStatusHttpCallback(HINTERNET, DWORD_PTR, DWORD, LPVOID, DWORD);
228
231
232protected:
234 mutable FCriticalSection SyncObject;
235
237
238 FWinHttpHandle ConnectionHandle;
240 FWinHttpHandle RequestHandle;
243
247 bool bConnectedToServer = false;
249 bool bRequestCancelled = false;
251 std::atomic<bool> bHasPendingDelegate{false};
252
253private:
254 FString RequestUrl;
255
256 enum class EState : uint8
257 {
259
262
264
266 SendRequest,
271
273
280
282
291
293
296 };
297
298 EState CurrentAction = EState::WaitToStart;
299
301
308
310
312 EHttpResponseCodes::Type ResponseCode = EHttpResponseCodes::Unknown;
316 TArray<uint8> CurrentChunk;
325
327
334
339
342};
343
344#endif // WITH_WINHTTP
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
#define DECLARE_DELEGATE_TwoParams(DelegateName, Param1Type, Param2Type)
Definition DelegateCombinations.h:57
#define DECLARE_DELEGATE_OneParam(DelegateName, Param1Type)
Definition DelegateCombinations.h:48
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition HttpRequestPayload.h:17
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Type
Definition IHttpBase.h:13
Type
Definition IHttpResponse.h:18
UTransformableHandle * GetHandle(UObject *InObject, const FName &InSocketName)
Definition TransformConstraint.cpp:65
Definition Optional.h:131