UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
HttpRequestCommon.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
7
10
15{
16public:
18
19 // IHttpBase
20 HTTP_API virtual FString GetURLParameter(const FString& ParameterName) const override;
21
22 // IHttpRequest
23 HTTP_API virtual EHttpRequestStatus::Type GetStatus() const override;
24 HTTP_API virtual const FString& GetEffectiveURL() const override;
25 HTTP_API virtual EHttpFailureReason GetFailureReason() const override;
28 HTTP_API virtual FString GetOption(const FName Option) const override;
29 HTTP_API virtual void SetOption(const FName Option, const FString & OptionValue) override;
30
31 HTTP_API virtual void SetTimeout(float InTimeoutSecs) override;
32 HTTP_API virtual void ClearTimeout() override;
33 HTTP_API virtual void ResetTimeoutStatus() override;
34 HTTP_API virtual TOptional<float> GetTimeout() const override;
35 HTTP_API float GetTimeoutOrDefault() const;
36
37 HTTP_API virtual void SetActivityTimeout(float InTimeoutSecs) override;
38
39 HTTP_API virtual const FHttpResponsePtr GetResponse() const override;
40
41 // Can be called on game thread or http thread depend on the delegate thread policy
42 virtual void FinishRequest() = 0;
43
44 HTTP_API virtual void CancelRequest() override;
45
46 HTTP_API virtual void Shutdown() override;
47
48 HTTP_API virtual void ProcessRequestUntilComplete() override;
49
51
52 HTTP_API virtual float GetElapsedTime() const override;
53
54 virtual bool IsThreadedRequestComplete() = 0;
55 virtual bool StartThreadedRequest() = 0;
56 virtual void TickThreadedRequest(float DeltaSeconds) = 0;
57
60
61 HTTP_API virtual void SetURL(const FString& InURL) override;
62 HTTP_API virtual const FString& GetURL() const override;
63
65 HTTP_API virtual EHttpRequestPriority GetPriority() const override;
66
67protected:
71 HTTP_API bool PreProcess();
72 HTTP_API void PostProcess();
74 virtual bool SetupRequest() = 0;
75 HTTP_API bool PreCheck() const;
76 HTTP_API virtual void ClearInCaseOfRetry();
77
80
85
88
97
98 virtual void AbortRequest() = 0;
99
100 virtual void CleanupRequest() = 0;
101
102 HTTP_API void HandleStatusCodeReceived(int32 StatusCode);
104
105 HTTP_API void SetEffectiveURL(const FString& InEffectiveURL);
106
109
111
112 HTTP_API bool SetContentAsStreamedFileDefaultImpl(const FString& Filename);
115
116 HTTP_API void LogFailure() const;
119
120 HTTP_API void InitResponse();
121
123 // The function for each impl to make sure when mocking response code, the internal state is valid for finishing request successfully
124 virtual void MockResponseData() = 0;
125
126 void OnFinishRequest(bool bSucceeded);
127
128protected:
131
134
137
140
143
145 std::atomic<bool> bTimedOut = false;
147 std::atomic<bool> bActivityTimedOut = false;
149 std::atomic<bool> bCanceled = false;
150
153
156
159
166
168 double StartProcessTime = 0.0;
169
171 double ConnectTime = -1.0;
172
173 FString URL;
174
177
180
183
186
187 // Flag to indicate the request was initialized with stream. In that case even if stream was set to
188 // null later on internally, the request itself won't cache received data anymore
189 std::atomic<bool> bInitializedWithValidStream = false;
190
193
196
198 float ElapsedTime = 0.0f;
199
202
204};
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
EHttpFailureReason
Definition IHttpBase.h:59
EHttpRequestPriority
Definition IHttpRequest.h:25
EHttpRequestDelegateThreadPolicy
Definition IHttpRequest.h:15
Definition HttpRequestCommon.h:15
HTTP_API float GetTimeoutOrDefault() const
Definition HttpRequestCommon.cpp:356
virtual HTTP_API void ProcessRequestUntilComplete() override
Definition HttpRequestCommon.cpp:582
virtual HTTP_API const FString & GetEffectiveURL() const override
Definition HttpRequestCommon.cpp:46
FCriticalSection HttpTaskTimerHandleCriticalSection
Definition HttpRequestCommon.h:165
virtual HTTP_API void ClearInCaseOfRetry()
Definition HttpRequestCommon.cpp:195
EHttpRequestStatus::Type CompletionStatus
Definition HttpRequestCommon.h:130
std::atomic< bool > bTimedOut
Definition HttpRequestCommon.h:145
virtual void CleanupRequest()=0
virtual bool StartThreadedRequest()=0
HTTP_API void StopTotalTimeoutTimer()
Definition HttpRequestCommon.cpp:562
HTTP_API void StartActivityTimeoutTimer()
Definition HttpRequestCommon.cpp:393
HTTP_API bool PreProcess()
Definition HttpRequestCommon.cpp:160
FHttpRequestCommon()
Definition HttpRequestCommon.cpp:25
HTTP_API void FinishRequestNotInHttpManager()
Definition HttpRequestCommon.cpp:204
HTTP_API bool TriggerMockResponse()
Definition HttpRequestCommon.cpp:104
virtual FHttpResponsePtr CreateResponse()=0
HTTP_API void PopulateUserAgentHeader()
Definition HttpRequestCommon.cpp:152
virtual HTTP_API void CancelRequest() override
Definition HttpRequestCommon.cpp:371
HTTP_API void SetEffectiveURL(const FString &InEffectiveURL)
Definition HttpRequestCommon.cpp:621
double StartProcessTime
Definition HttpRequestCommon.h:168
HTTP_API float GetTimeStartedWaitingInQueue() const
Definition HttpRequestCommon.cpp:650
TSharedPtr< FArchive > ResponseBodyReceiveStream
Definition HttpRequestCommon.h:182
std::atomic< bool > bInitializedWithValidStream
Definition HttpRequestCommon.h:189
HTTP_API void HandleStatusCodeReceived(int32 StatusCode)
Definition HttpRequestCommon.cpp:597
std::atomic< bool > bCanceled
Definition HttpRequestCommon.h:149
TOptional< float > ActivityTimeoutSecs
Definition HttpRequestCommon.h:142
HTTP_API void OnTotalTimeoutTimerTaskTrigger()
Definition HttpRequestCommon.cpp:544
HTTP_API void InitResponse()
Definition HttpRequestCommon.cpp:143
virtual HTTP_API void SetPriority(EHttpRequestPriority InPriority) override
Definition HttpRequestCommon.cpp:672
virtual HTTP_API void ClearTimeout() override
Definition HttpRequestCommon.cpp:339
virtual HTTP_API TOptional< float > GetTimeout() const override
Definition HttpRequestCommon.cpp:351
TSharedPtr< IHttpTaskTimerHandle > TotalTimeoutHttpTaskTimerHandle
Definition HttpRequestCommon.h:161
void OnFinishRequest(bool bSucceeded)
Definition HttpRequestCommon.cpp:802
HTTP_API void StopPassingReceivedData()
Definition HttpRequestCommon.cpp:696
virtual HTTP_API void SetTimeout(float InTimeoutSecs) override
Definition HttpRequestCommon.cpp:334
HTTP_API void StartWaitingInQueue()
Definition HttpRequestCommon.cpp:645
virtual void TickThreadedRequest(float DeltaSeconds)=0
HTTP_API void StartActivityTimeoutTimerBy(double DelayToTrigger)
Definition HttpRequestCommon.cpp:426
TSharedPtr< IHttpTaskTimerHandle > ActivityTimeoutHttpTaskTimerHandle
Definition HttpRequestCommon.h:163
virtual HTTP_API EHttpRequestPriority GetPriority() const override
Definition HttpRequestCommon.cpp:677
bool bUsePlatformActivityTimeout
Definition HttpRequestCommon.h:152
HTTP_API void HandleRequestFailed()
Definition HttpRequestCommon.cpp:270
HTTP_API void SetStatus(EHttpRequestStatus::Type InCompletionStatus)
Definition HttpRequestCommon.cpp:313
float TimeStartedWaitingInQueue
Definition HttpRequestCommon.h:201
virtual bool SetupRequest()=0
virtual void MockResponseData()=0
virtual HTTP_API EHttpRequestStatus::Type GetStatus() const override
Definition HttpRequestCommon.cpp:41
virtual void FinishRequest()=0
HTTP_API void StartTotalTimeoutTimer()
Definition HttpRequestCommon.cpp:505
double ActivityTimeoutAt
Definition HttpRequestCommon.h:158
virtual HTTP_API void SetActivityTimeout(float InTimeoutSecs) override
Definition HttpRequestCommon.cpp:361
HTTP_API bool OpenRequestPayloadDefaultImpl()
Definition HttpRequestCommon.cpp:723
HTTP_API void LogResponse(const TSharedPtr< IHttpResponse > &InResponse)
Definition HttpRequestCommon.cpp:752
virtual HTTP_API FString GetURLParameter(const FString &ParameterName) const override
Definition HttpRequestCommon.cpp:31
FString URL
Definition HttpRequestCommon.h:173
FString EffectiveURL
Definition HttpRequestCommon.h:176
virtual HTTP_API const FHttpResponsePtr GetResponse() const override
Definition HttpRequestCommon.cpp:366
virtual HTTP_API void Shutdown() override
Definition HttpRequestCommon.cpp:573
HTTP_API float GetActivityTimeoutOrDefault() const
Definition HttpRequestCommon.cpp:704
HTTP_API void CloseRequestPayloadDefaultImpl()
Definition HttpRequestCommon.cpp:744
virtual HTTP_API void ResetTimeoutStatus() override
Definition HttpRequestCommon.cpp:345
virtual HTTP_API EHttpRequestDelegateThreadPolicy GetDelegateThreadPolicy() const override
Definition HttpRequestCommon.cpp:241
float ElapsedTime
Definition HttpRequestCommon.h:198
double RequestStartTimeAbsoluteSeconds
Definition HttpRequestCommon.h:155
virtual HTTP_API void SetURL(const FString &InURL) override
Definition HttpRequestCommon.cpp:656
TMap< const FName, FString > Options
Definition HttpRequestCommon.h:195
HTTP_API bool PreCheck() const
Definition HttpRequestCommon.cpp:56
HTTP_API bool PassReceivedDataToStream(void *Ptr, int64 Length)
Definition HttpRequestCommon.cpp:682
double ConnectTime
Definition HttpRequestCommon.h:171
EHttpRequestPriority Priority
Definition HttpRequestCommon.h:203
virtual HTTP_API void SetDelegateThreadPolicy(EHttpRequestDelegateThreadPolicy InDelegateThreadPolicy) override
Definition HttpRequestCommon.cpp:236
TUniquePtr< FRequestPayload > RequestPayload
Definition HttpRequestCommon.h:192
HTTP_API void ResetActivityTimeoutTimer(FStringView Reason)
Definition HttpRequestCommon.cpp:469
virtual HTTP_API bool SetResponseBodyReceiveStream(TSharedRef< FArchive > Stream) override
Definition HttpRequestCommon.cpp:631
virtual HTTP_API void SetOption(const FName Option, const FString &OptionValue) override
Definition HttpRequestCommon.cpp:256
HTTP_API void LogFailure() const
Definition HttpRequestCommon.cpp:307
HTTP_API void PostProcess()
Definition HttpRequestCommon.cpp:190
virtual void AbortRequest()=0
EHttpRequestDelegateThreadPolicy DelegateThreadPolicy
Definition HttpRequestCommon.h:136
virtual bool IsThreadedRequestComplete()=0
virtual HTTP_API FString GetOption(const FName Option) const override
Definition HttpRequestCommon.cpp:246
EHttpFailureReason FailureReason
Definition HttpRequestCommon.h:133
HTTP_API void OnActivityTimeoutTimerTaskTrigger()
Definition HttpRequestCommon.cpp:443
HTTP_API bool SetContentAsStreamedFileDefaultImpl(const FString &Filename)
Definition HttpRequestCommon.cpp:709
FCriticalSection ResponseBodyReceiveStreamCriticalSection
Definition HttpRequestCommon.h:185
TSharedPtr< FHttpResponseCommon > ResponseCommon
Definition HttpRequestCommon.h:179
HTTP_API void StopActivityTimeoutTimer()
Definition HttpRequestCommon.cpp:487
HTTP_API void HandleRequestSucceed()
Definition HttpRequestCommon.cpp:261
virtual HTTP_API EHttpFailureReason GetFailureReason() const override
Definition HttpRequestCommon.cpp:51
virtual HTTP_API const FString & GetURL() const override
Definition HttpRequestCommon.cpp:667
HTTP_API void TriggerStatusCodeReceivedDelegate(int32 StatusCode)
Definition HttpRequestCommon.cpp:606
HTTP_API void SetFailureReason(EHttpFailureReason InFailureReason)
Definition HttpRequestCommon.cpp:323
TOptional< float > TimeoutSecs
Definition HttpRequestCommon.h:139
std::atomic< bool > bActivityTimedOut
Definition HttpRequestCommon.h:147
virtual HTTP_API float GetElapsedTime() const override
Definition HttpRequestCommon.cpp:640
Definition HttpRequestImpl.h:12
Definition HttpResponseCommon.h:13
Definition NameTypes.h:617
Definition HttpThread.h:22
Definition UnrealString.h.inl:34
Definition SharedPointer.h:153
Definition UniquePtr.h:107
Type
Definition IHttpBase.h:13
@ NotStarted
Definition IHttpBase.h:15
Definition Optional.h:131