From 6f3e1d1f86f646288c4a90c9ec899a532ab72b24 Mon Sep 17 00:00:00 2001 From: Norman Lansing Date: Mon, 16 Mar 2026 18:12:29 -0400 Subject: [PATCH] Lesson 65 - Parsing Errors --- .../Private/UI/API_Test/APITestManager.cpp | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Source/DedicatedServers/Private/UI/API_Test/APITestManager.cpp b/Source/DedicatedServers/Private/UI/API_Test/APITestManager.cpp index cff68d44..b026f39a 100644 --- a/Source/DedicatedServers/Private/UI/API_Test/APITestManager.cpp +++ b/Source/DedicatedServers/Private/UI/API_Test/APITestManager.cpp @@ -5,6 +5,7 @@ #include "HttpModule.h" #include "JsonObjectConverter.h" #include "Data/API/APIData.h" +#include "DedicatedServers/DedicatedServers.h" #include "GameplayTags/DedicatedServersTags.h" #include "Interfaces/IHttpResponse.h" #include "UI/HTTP/HTTPRequestTypes.h" @@ -33,8 +34,28 @@ void UAPITestManager::ListFleets_Response(FHttpRequestPtr Request, FHttpResponse TSharedPtr JsonObject; TSharedRef> JsonReader = TJsonReaderFactory<>::Create(Response->GetContentAsString()); + if (FJsonSerializer::Deserialize(JsonReader, JsonObject)) { + const TSharedPtr* ErrorObjPtr = nullptr;; + + if (JsonObject->HasField(TEXT("errorType")) || JsonObject->HasField(TEXT("errorMessage"))) + { + FString ErrorType = JsonObject->HasField(TEXT("errorType")) ? JsonObject->GetStringField(TEXT("errorType")) : TEXT("Unknown Error"); + FString ErrorMessage = JsonObject->HasField(TEXT("errorMessage")) ? JsonObject->GetStringField(TEXT("errorMessage")) : TEXT("Unknown Error Message"); + + UE_LOGFMT(LogDedicatedServers, Error, "Error Type: {ErrorType}", ErrorType); + UE_LOGFMT(LogDedicatedServers, Error, "Error Message: {ErrorMessage}", ErrorMessage); + return; + } + if (JsonObject->HasField(TEXT("$fault"))) + { + FString ErrorType = JsonObject->HasField(TEXT("name")) ? JsonObject->GetStringField(TEXT("name")) : TEXT("Unknown Error"); + UE_LOGFMT(LogDedicatedServers, Error, "Error Type: {ErrorType}", ErrorType); + return; + } + + if (JsonObject->HasField(TEXT("$metadata"))) { TSharedPtr MetaDataJsonObject = JsonObject->GetObjectField(TEXT("$metadata"));