VaRest
From ИМЛ Вики
- C++ example
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/GameMode.h"
#include "VaRestSubsystem.h"
#include "GameplayGM.generated.h"
/**
*
*/
UCLASS()
class ONLINEGAMEV2_API AGameplayGM : public AGameMode
{
GENERATED_BODY()
AGameplayGM(const FObjectInitializer& ObjectInitializer);
public:
UPROPERTY()
UVaRestSubsystem* VaRestSubsystem;
UPROPERTY()
UVaRestRequestJSON* JsonRequest;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
TMap<FString, FString> ClientOptionsStrings;
void PreLogin(const FString& Options, const FString& Address, const FUniqueNetIdRepl& UniqueId, FString& ErrorMessage) override;
UFUNCTION()
void OnRequestComplete(UVaRestRequestJSON* Request);
};
// Fill out your copyright notice in the Description page of Project Settings.
#include "GameplayGM.h"
#include "Kismet/GameplayStatics.h"
#include "Containers/Array.h"
#include "Containers/Map.h"
#include "VaRest.h"
#include "VaRestDefines.h"
#include "VaRestJsonObject.h"
#include "VaRestJsonValue.h"
#include "VaRestLibrary.h"
#include "VaRestRequestJSON.h"
#include "VaRestSettings.h"
#include "VaRestSubsystem.h"
#include "VaRestTypes.h"
AGameplayGM::AGameplayGM(const FObjectInitializer& ObjectInitializer)
{
}
void AGameplayGM::PreLogin(const FString& Options, const FString& Address, const FUniqueNetIdRepl& UniqueId, FString& ErrorMessage)
{
VaRestSubsystem = GEngine->GetEngineSubsystem<UVaRestSubsystem>();
JsonRequest = VaRestSubsystem->ConstructVaRestRequestExt(EVaRestRequestVerb::POST, EVaRestRequestContentType::json);
UVaRestJsonObject* JsonObject = JsonRequest->GetRequestObject();
JsonObject->SetStringField("key", "value");
JsonRequest->ProcessURL("http://localhost:5000/api/auth/login");
JsonRequest->OnRequestComplete.AddDynamic(this, &AGameplayGM::OnRequestComplete);
//FString login = UGameplayStatics::ParseOption(Options, TEXT("login"));
//FString password = UGameplayStatics::ParseOption(Options, TEXT("password"));
//UE_LOG(LogTemp, Warning, TEXT("login: %s, pass: %s"), *login, *password);
}
void AGameplayGM::OnRequestComplete(UVaRestRequestJSON* Request)
{
JsonRequest->OnRequestComplete.RemoveDynamic(this, &AGameplayGM::OnRequestComplete);
Request->GetResponseContentAsString();
UE_LOG(LogTemp, Warning, TEXT("Response: %s"), *Request->GetResponseContentAsString());
}