UJsonFunction* UJsonFunction::ConstructJsonObject()
{
return NewObject();
}
void UJsonFunction::MyHttpCall(FString URL)
{
TSharedRef request = FHttpModule::Get().CreateRequest();
GEngine->AddOnScreenDebugMessage(1, 2.0f, FColor::Green, FString::Printf(TEXT("%s"), *URL));
request->SetVerb("GET");
request->SetURL(URL);
//request->SetHeader(TEXT("Content-Type"), TEXT("application/json; charset=utf-8"));
request->OnProcessRequestComplete().BindUObject(this, &UJsonFunction::OnRequestReceived);
request->ProcessRequest();
}
void UJsonFunction::OnRequestReceived(FHttpRequestPtr request, FHttpResponsePtr response, bool bWasSuccessful)
{
TSharedPtr jsonObj;
TSharedRef> jsonReader = TJsonReaderFactory<>::Create(response->GetContentAsString());
if (!bWasSuccessful) {
UE_LOG(LogJson, Error, TEXT("Response was invalid! Please check the URL."));
// Broadcast the failed event
return;
}
FString result = response->GetContentAsString();
GEngine->AddOnScreenDebugMessage(1, 2.0f, FColor::Green, FString::Printf(TEXT("%s"), *result));
UE_LOG(LogTemp, Warning, TEXT("Json: %s"), *result);
if (FJsonSerializer::Deserialize(jsonReader, jsonObj))
{
int32 recievedInt = jsonObj->GetIntegerField("myRank");
GEngine->AddOnScreenDebugMessage(1, 2.0f, FColor::Green, FString::FromInt(recievedInt));
UE_LOG(LogTemp, Warning, TEXT("myRank: %d"), recievedInt);
FString name = jsonObj->GetStringField("name2");
GEngine->AddOnScreenDebugMessage(1, 2.0f, FColor::Green, name);
UE_LOG(LogTemp, Warning, TEXT("myRank: %s"), *name);
}
}