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 "HttpModule.h"
#include "Data/API/APIData.h"
#include "GameplayTags/DedicatedServerTags.h"
void UPortalManager::JoinGameSession()
{
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();
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);
}
@@ -20,6 +22,8 @@ void USignInOverlay::NativeConstruct()
void USignInOverlay::OnJoinGameButtonClicked()
{
check (IsValid(PortalManager));
check(IsValid(JoinGameWidget));
check(IsValid(JoinGameWidget->Button_JoinGame));
PortalManager->BroadcastJoinGameSessionMessage.AddDynamic(this, &USignInOverlay::UpdateJoinGameStatusMessage);
PortalManager->JoinGameSession();
@@ -28,5 +32,6 @@ void USignInOverlay::OnJoinGameButtonClicked()
void USignInOverlay::UpdateJoinGameStatusMessage(const FString& StatusMessage)
{
check(IsValid(JoinGameWidget));
JoinGameWidget->SetStatusMessage(StatusMessage);
}

View File

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