Lesson 74 - Find or Create Game Sessions HTTP Request

This commit is contained in:
Norman Lansing
2026-04-02 22:01:25 -04:00
parent 8f916c855b
commit 3ed338054f
3 changed files with 34 additions and 2 deletions

View File

@@ -3,7 +3,29 @@
#include "UI/Portal/PortalManager.h" #include "UI/Portal/PortalManager.h"
#include "HttpModule.h"
#include "Data/API/APIData.h"
#include "GameplayTags/DedicatedServerTags.h"
void UPortalManager::JoinGameSession() void UPortalManager::JoinGameSession()
{ {
BroadcastJoinGameSessionMessage.Broadcast(TEXT("Searching for Game Session...")); BroadcastJoinGameSessionMessage.Broadcast(TEXT("Searching for Game Session..."));
check(APIData);
TSharedPtr<IHttpRequest> Request = FHttpModule::Get().CreateRequest();
Request->OnProcessRequestComplete().BindUObject(this, &UPortalManager::FindOrCreateGameSession_Response);
const FString APIUrl = APIData->GetAPIEndPoint(DedicatedServersTags::GameSessionsAPI::FindOrCreateGameSession);
Request->SetURL(APIUrl);
Request->SetVerb("POST");
Request->SetHeader("Content-Type", "application/json");
Request->ProcessRequest();
}
void UPortalManager::FindOrCreateGameSession_Response(FHttpRequestPtr Request, FHttpResponsePtr Response,
bool bWasSuccessful)
{
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Find or Create Game Session Response Received"));
} }

View File

@@ -12,7 +12,9 @@ void USignInOverlay::NativeConstruct()
Super::NativeConstruct(); Super::NativeConstruct();
check(PortalManagerClass); check(PortalManagerClass);
PortalManager = NewObject<UPortalManager>(PortalManagerClass); check(IsValid(JoinGameWidget));
check(IsValid(JoinGameWidget->Button_JoinGame));
PortalManager = NewObject<UPortalManager>(this, PortalManagerClass);
JoinGameWidget->Button_JoinGame->OnClicked.AddDynamic(this, &USignInOverlay::OnJoinGameButtonClicked); JoinGameWidget->Button_JoinGame->OnClicked.AddDynamic(this, &USignInOverlay::OnJoinGameButtonClicked);
} }
@@ -20,6 +22,8 @@ void USignInOverlay::NativeConstruct()
void USignInOverlay::OnJoinGameButtonClicked() void USignInOverlay::OnJoinGameButtonClicked()
{ {
check (IsValid(PortalManager)); check (IsValid(PortalManager));
check(IsValid(JoinGameWidget));
check(IsValid(JoinGameWidget->Button_JoinGame));
PortalManager->BroadcastJoinGameSessionMessage.AddDynamic(this, &USignInOverlay::UpdateJoinGameStatusMessage); PortalManager->BroadcastJoinGameSessionMessage.AddDynamic(this, &USignInOverlay::UpdateJoinGameStatusMessage);
PortalManager->JoinGameSession(); PortalManager->JoinGameSession();
@@ -28,5 +32,6 @@ void USignInOverlay::OnJoinGameButtonClicked()
void USignInOverlay::UpdateJoinGameStatusMessage(const FString& StatusMessage) void USignInOverlay::UpdateJoinGameStatusMessage(const FString& StatusMessage)
{ {
check(IsValid(JoinGameWidget));
JoinGameWidget->SetStatusMessage(StatusMessage); JoinGameWidget->SetStatusMessage(StatusMessage);
} }

View File

@@ -3,6 +3,7 @@
#pragma once #pragma once
#include "CoreMinimal.h" #include "CoreMinimal.h"
#include "Interfaces/IHttpRequest.h"
#include "UI/HTTP/HTTPRequestManager.h" #include "UI/HTTP/HTTPRequestManager.h"
#include "PortalManager.generated.h" #include "PortalManager.generated.h"
@@ -21,5 +22,9 @@ public:
UPROPERTY(BlueprintAssignable) UPROPERTY(BlueprintAssignable)
FBroadcastJoinGameSessionMessage BroadcastJoinGameSessionMessage; FBroadcastJoinGameSessionMessage BroadcastJoinGameSessionMessage;
void JoinGameSession(); auto JoinGameSession() -> void;
private:
void FindOrCreateGameSession_Response(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful);
}; };