Unreal 에서 API 호출하기

개요

이번 언리얼 프로젝트를 진행하면서 웹 API 를 호출하여 데이터를 받아 올 일이 있었습니다. 그리고 언리얼에서 데이터를 받아오는 과정은 어렵지는 않지만 귀찮은 절차들이 있었고, 여러군대에서 하나의 API를 호출해 다른 종류의 데이터를 받아올 일이 있어 이런 부분을 어떻게 하면 중복 코드 없이 받아올 수 있을지 고민하게 되었죠.

사실 중복코드를 하나로 묶는 방법은 그렇게 큰 어려움이 없었습니다. 다만 문제는 이걸 어떻게 다른 객체에서 콜백을 받아오게 할지 여부였죠. 오랜 고민 끝에 결국 방법을 찾긴 했습니다.

구현

결국 마침네 델리게이트를 넘겨서 호출하는 곳에서 콜백을 추가하여 원하는 방식으로 데이터를 가공할 수 있게 처리하였습니다.

FHttpRequestCompleteDelegate & UNovaApi::FetchLocationElevation(FString Locations) {
    static constexpr TCHAR Fmt[] = TEXT("https://maps.googleapis.com/maps/api/elevation/json?locations=%ls&key=%ls&language=ko");
	FString Uri = FString::Printf(Fmt, *Locations, *GoogleKey);
	FHttpRequestRef Request = CreateRequest(Uri);
	Request->SetVerb("GET");
	Request->SetHeader("Content-Type", "application/x-www-form-urlencoded");
	Request->ProcessRequest();
	return Request->OnProcessRequestComplete();
}

UNovaApi::FetchLocationElevation(Locations).BindUObject(this, &ARouteManager::ProcessQueryResponse);

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *