Ok got it to send. Turned out I needed a slash at the end of my URL for it to register the post vars… the joy of the web
void AServerClass::ContactServer()
{
FHttpRequestRef Request = FHttpModule::Get().CreateRequest();
FString URL = FString::Printf(TEXT("%s%s"), *Url, *CContentURL);
Request->SetURL(URL);
Request->SetVerb(TEXT("POST"));
Request->SetHeader(TEXT("Content-Type"), TEXT("application/json"));
Request->SetHeader(TEXT("Accepts"), TEXT("application/json"));
FString META = FString::Printf(TEXT("wfgl=%s"), *License);
FString Token = FString::Printf(TEXT("%s%s"), *SecurityString, *License);
for (const TPair<FString, FString>& pair : Defined)
{
META = FString::Printf(TEXT("%s&%s=%s"), *META, *pair.Key, *pair.Value);
Token = FString::Printf(TEXT("%s%s"), *Token, *pair.Value);
}
FString EncodedToken = FMD5::HashAnsiString(*Token);
META = FString::Printf(TEXT("%s&token=%s"), *META, *EncodedToken);
FPayLoad payload;
payload.wfgl = License;
payload.Defined = Defined;
payload.SecurityString = SecurityString;
payload.EncodedToken = EncodedToken;
payload.Token = Token;
payload.META = META;
FString outString;
FJsonObjectConverter::UStructToJsonObjectString(payload, outString);
Request->SetContentAsString(outString);
Request->OnProcessRequestComplete().BindUObject(this, &AServerClass::ProcessReq);
Request->ProcessRequest();
}
void AServerClass::ProcessReq(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful)
{
if (bWasSuccessful)
{
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Blue, "Success");
}
RESULT = Response.Get()->GetContentAsString();
GEngine->AddOnScreenDebugMessage(-1,2,FColor::Cyan,*RESULT);
if (RESULT.Contains(" "))
{
UE_LOG(LogTemp, Error, TEXT("Meta data contains spaces!!!!!!!!!!!!!!!!!!!!!!!!!!!!"));
return;
}
}
struct added in header
USTRUCT()
struct FPayLoad
{
GENERATED_BODY()
public:
UPROPERTY()
FString wfgl;
UPROPERTY()
FString SecurityString;
UPROPERTY()
TMap<FString, FString> Defined;
UPROPERTY()
FString Token;
UPROPERTY()
FString META;
UPROPERTY()
FString EncodedToken;
};
I echoed the post that is returned from the server

php echo
<?php
header('Content-Type: application/json; charset=utf-8');
$data = new stdClass();
$data->success = true;
$_POST = json_decode(file_get_contents("php://input"), true);
$data->data = $_POST;
echo json_encode($data);
?>
Just decode it on the server => do changes => return encoded info as long as success is returned as true.
You can filter out the data in the struct as you need. You can skip the $_GET type ? & symbols.
Serialization is also safer this way.