Lesson 80 - Serializing Content

This commit is contained in:
Norman Lansing
2026-04-05 17:07:48 -04:00
parent bc219f373d
commit 9837e4e1d6
4 changed files with 45 additions and 0 deletions

View File

@@ -46,3 +46,19 @@ void UHTTPRequestManager::DumpMetadata(TSharedPtr<FJsonObject> JsonObject)
DSMetaData.Dump();
}
}
FString UHTTPRequestManager::SerializeJsonContent(const TMap<FString, FString>& Params)
{
TSharedPtr<FJsonObject> ContentJsonObject = MakeShareable(new FJsonObject);
for (auto Param : Params)
{
ContentJsonObject->SetStringField(Param.Key, Param.Value);
}
FString Content;
TSharedRef<TJsonWriter<>> JsonWriter = TJsonWriterFactory<>::Create(&Content);
FJsonSerializer::Serialize(ContentJsonObject.ToSharedRef(), JsonWriter);
return Content;
}

View File

@@ -119,4 +119,29 @@ void UPortalManager::HandleGameSessionStatus(const FString& Status, const FStrin
void UPortalManager::TryCreatePlayerSession(const FString& PlayerId, const FString& GameSessionId)
{
BroadcastJoinGameSessionMessage.Broadcast(TEXT("Searching for Game Session..."), false);
check(APIData);
TSharedPtr<IHttpRequest> Request = FHttpModule::Get().CreateRequest();
Request->OnProcessRequestComplete().BindUObject(this, &UPortalManager::FindPlayerSession_Response);
const FString APIUrl = APIData->GetAPIEndPoint(DedicatedServersTags::GameSessionsAPI::CreatePlayerSession);
Request->SetURL(APIUrl);
Request->SetVerb("POST");
Request->SetHeader("Content-Type", "application/json");
TMap<FString, FString> Params = {
{TEXT("playerId"), PlayerId},
{TEXT("sessionId"), GameSessionId}
};
Request->SetContentAsString(SerializeJsonContent(Params));
Request->ProcessRequest();
}
void UPortalManager::FindPlayerSession_Response(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful)
{
}

View File

@@ -24,4 +24,6 @@ protected:
bool ContainsErrors(TSharedPtr<FJsonObject> JsonObject, bool bLogErrors = true);
void DumpMetadata(TSharedPtr<FJsonObject> JsonObject);
FString SerializeJsonContent(const TMap<FString, FString>& Params);
};

View File

@@ -30,6 +30,8 @@ private:
FString GetUniquePlayerId() const;
void HandleGameSessionStatus(const FString& Status, const FString& SessionId);
void TryCreatePlayerSession(const FString& PlayerId, const FString& GameSessionId);
void FindPlayerSession_Response(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful);
FTimerHandle CreateSessionTimer;