Files
UnrealEngineUWP/Engine/Plugins/Web/HttpBlueprint/Source/HttpBlueprintGraph/Private/HttpRequestProxyObject.cpp
George Rolfe 5d4a229182 Http for Blueprint
#jira UETOOL-4465
#preflight 622febfb6065b4ecd3dd2858
#rb simon.therriault

[CL 19381806 by George Rolfe in ue5-main branch]
2022-03-14 22:09:21 -04:00

43 lines
1.3 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "HttpRequestProxyObject.h"
#include "HttpBlueprintFunctionLibrary.h"
#include "HttpModule.h"
#include "Interfaces/IHttpResponse.h"
UHttpRequestProxyObject* UHttpRequestProxyObject::CreateHttpRequestProxyObject(
const FString& InUrl,
const FString& InVerb,
FHttpHeader InHeader,
const FString& InBody)
{
UHttpRequestProxyObject* const Proxy = NewObject<UHttpRequestProxyObject>();
Proxy->SetFlags(RF_StrongRefOnFrame);
Proxy->CachedHeader = InHeader;
Proxy->ProcessRequest(InUrl, InVerb, MoveTemp(InHeader), InBody);
return Proxy;
}
void UHttpRequestProxyObject::ProcessRequest(
const FString& InUrl,
const FString& InVerb,
FHttpHeader&& InHeader,
const FString& InBody)
{
FHttpModule& HttpModule = FHttpModule::Get();
const TSharedRef<IHttpRequest> Request = HttpModule.CreateRequest();
Request->SetURL(InUrl);
Request->SetVerb(InVerb);
Request->SetContentAsString(InBody);
InHeader.AssignHeadersToRequest(Request);
Request->ProcessRequest();
Request->OnProcessRequestComplete().BindUObject(this, &ThisClass::ProcessComplete);
}
void UHttpRequestProxyObject::ProcessComplete(FHttpRequestPtr InRequest, FHttpResponsePtr InResponse, bool bInSuccessful)
{
OnRequestComplete.Broadcast(InResponse->GetContentAsString(), bInSuccessful, MoveTemp(CachedHeader));
}